2012-06-07 89 views
1

我adminstrating一個網站,一個非常小的一羣人(50-60)。該網站有一個簡單的登錄,所有的用戶數據都存儲在MySQL數據庫中,該網站由一家知名的webhotel託管。安全的方式連接到MySQL數據庫

我現在連接到數據庫的方式是通過一個單一的用戶帳戶,在讀取的權利和變化的數據庫中指定,以確保每個用戶都可以修改自己的密碼。該腳本(mysql_conn.php)包括在需要的頁面,看起來像這樣:

$server = "server_name"; 
$username_sql = "[email protected]"; // This format is specific for that webhotel 
$password_sql = "A_strong_password"; // Hard coded in the file 

$conn = mysql_connect($server, $username_sql, $password_sql); 
$db = mysql_select_db("user_list", $conn); 
mysql_query("SET NAMES Utf8"); 
if(!$db) { 
    echo "Error message"; 
exit(); 
} 

技術上講,它就像一個魅力,但我不知道這是最好的一段路要走,尤其是與密碼。另外,我應該在每個頁面的末尾包括某種數據庫斷開連接嗎?

+0

可能重複[如何保證數據庫的密碼在PHP?](http://stackoverflow.com/questions/97984/how-to-secure-database-passwords-in-php ) – eggyal

回答

1

我outsorce登錄數據到一個名爲類似「dbConnection.inc.php」文件,並將其存儲在某個目錄不能從外部訪問。

在極端情況下可能發生,你的供應商提供.PHP頁面爲純文本。如果發生這種情況,訪客可以看到您的密碼但如果它被感染了,你會阻止...

3

首先使用mysql_ *不推薦用於新代碼,請參閱PHP Introduction ot MySQL 如果可能,請考慮切換到PDO。

其次,在PHP中存儲密碼相當安全,甚至比以純文本形式保存它更安全,如xml或ini等。除非您的Web服務器出現故障並無法提供PHP頁面,請直接運行PHP腳本(或通過網絡瀏覽器訪問它)永遠不會公開密碼(與xml/ini文件相反)。

考慮一些config.php文件不是從Web瀏覽器訪問存儲的密碼(即地方公共根以上)。

唯一可能劫持您的密碼的情況是當您的Web服務器被黑客入侵時,但在這種情況下無論您如何保存密碼(除非其加密),它都將被劫持。

請注意,如果您決定切換到PDO,如果連接失敗,PDO將拋出PDOException,如果php配置爲顯示錯誤,將會泄露您的密碼。請參閱The related bug。所以謹慎使用!

祝你好運:)

+0

謝謝。我現在將敏感數據存儲在配置文件中,並且工作正常。 – Sandokan