2012-07-14 201 views
0

我有我的服務器上的任何其他功能去連接到一個全球性的MySQL數據庫PHP函數:PHP - 安全的MySQL登錄

function connect_to_mysql_db() { 

$con = mysql_connect("localhost", "user_name", "password"); 
if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("db_name", $con); 

} 

持有該功能,以及大多數的文件其他位於以下位置我BlueHost的服務器上:

/home3/username/includes/scripts.php 

該數據庫目前只持有一個表的電子郵件地址列表(我的那些用戶的...)我只是想知道如果數據庫是安全的(爲了我的訂戶)

如果沒有,有沒有人有任何其他想法(加密?)。我知道HASHING不會工作,因爲這通常是1路...

編輯

FYI:該/包括/目錄不是/的public_html/

結論

非常感謝所有幫助過我的人,但我決定,沒有任何理由,承擔太多的責任,所以我不會存儲任何安全在數據庫中。相反,我會使用外部服務!

乾杯!

+1

你想知道是否連接到數據庫的方式,你目前這樣做是安全的嗎? – Gumbo 2012-07-14 19:56:23

+1

我不認爲你明白「安全」的含義。 – rook 2012-07-14 19:57:20

+0

是的,差不多;) – Walendas 2012-07-14 19:57:40

回答

-2

您可以使用AES加密電子郵件地址。 即:

$query = "INSERT INTO (table) AES_ENCRYPT('$email', '$salt')..."

要獲取電子郵件回到正常的文本:

$query = "SELECT AES_DECRYPT('email', '$salt') FROM (table) WHERE 1..."

$鹽將是你放入變量隨機產生的密鑰。

您數據庫表中的列需要是blob。

+0

提示:php端加密允許256位AES,mysql端只有128. – 2012-07-14 20:00:45

+0

2事情:1)我必須定義'$ salt'嗎? 2)什麼是_blob_?謝謝!!!我是一個n00b! – Walendas 2012-07-14 20:01:27

+0

**也**我有一個ID列,所以我怎麼做INSERT語句? – Walendas 2012-07-14 20:05:11

1

我覺得它很安全。無論如何,如果你想了解更多,嘗試這樣的事情:

$crypted = openssl_encrypt ('myemail' ,'AES256', 'mypass') 

然後

$decrypted = openssl_decrypt ($crypted, 'AES256', 'mypass') 

參考here

2

我不認爲這會給你任何額外的安全。 如果有人攻擊你的服務器,讀取腳本以獲取數據庫憑證,登錄到mysql,讀取mailadressen並只獲取加密數據,他可能會再次查看解密密鑰的腳本...

所以,我認爲這不會更安全。你最好專注於編寫一個安全的環境,以防止任何訪問服務器;-)