2012-01-29 139 views
4

我似乎無法就此獲得直接答案,所以希望有人能提供幫助。在PHP腳本中保護MySQL密碼

如果我在我的PHP腳本中包含mysqli_connect()聲明並且還包含我的MySQL用戶名和密碼,那麼這些細節在任何時候都會受到攻擊?顯然,PHP托架之間的任何東西都不會在客戶端提供(因此,在查看源代碼時不應該可見),但是有沒有其他方式可以泄露這些細節?

+0

可能重複的[如何在PHP中保護數據庫密碼?](http://stackoverflow.com/questions/97984/how-to-secure-database-passwords-in-php) – 2012-01-29 12:13:16

+2

上面的鏈接問題解決了它相當徹底。如果您的服務器管理員損壞,或者您的Web服務器配置錯誤,並意外地將PHP腳本作爲純文本或HTML提供服務,那麼您的密碼將受到損害的唯一方法。 – 2012-01-29 12:14:39

+0

謝謝你的擡頭。 – Ryan 2012-01-29 12:17:52

回答

5

如果由於某種原因,PHP突然無法工作(由於升級,損壞的配置文件,例如),這些文件可能會作爲HTML提供,並且登錄信息將免費提供給任何站點的用戶。我之前看到過這種情況。

解決此問題的最佳方法是將所有內容從網絡根移除,但index.php文件只包含目錄之外的一個文件。這也意味着你的源代碼不會受到影響,假設PHP不起作用。

E.g. /var/www/public_html只保存一個文件:index.php

<?php require("../entrypoint.php"); 

然後一切位於/var/www。如果PHP失敗,只有index.php將被泄密。

這將使它非常安全,除非您的服務器本身受到威脅,或者您允許用戶執行PHP代碼,但這是另一個問題。在連接初始化後,大多數模塊化CMS也會取消設置所有連接變量,以避免其中一個模塊意外暴露任何內容。

+0

好的提示。 PHP失敗的可能性有多大?這實際上多久出現一次? – Ryan 2012-01-29 12:14:00

+1

只要你堅持穩定版本,我會說這很少見,不太可能。 – kba 2012-01-29 12:20:50