2012-09-19 80 views
1

當談到在PHP中編程您的Web應用程序時,防止您的MySQL信息被其他人(第三方)泄露或發現的最有效方法是什麼?這些信息將包括域名和登錄以及connet功能中使用的密碼。在PHP中保持你的MySQL證書私有的最佳方式是什麼?

舉一個例子一個很好的程序可能會保持你的MySQL連接功能,在一個單獨的PHP文件等

任何想法?

回答

4
  1. 讓您的憑據在一個單獨的.php文件文檔根目錄(所以它不是通過網絡直接訪問)
  2. 這是更好地保持它.php文件,而不是,比方說,.inc,因此即使通過網絡意外訪問,它也會被執行並且不會被直接顯示。
  3. 建立連接後不要保留用戶名和密碼(即,在您之後取消設置持有憑證的變量或數組密鑰不再需要它們);你可以不小心暴露你不必再
  4. 不要讓憑據的重複列入文件(例如,在您的憑據if (defined('DB_AUTH_LOADED')) return; define('DB_AUTH_LOADED', 1);文件),以避免您的憑據的任何可能的重新定義瓦爾

這應該保護您免於直接訪問您的憑據,並防止您通過自己的代碼意外泄漏憑證。如果攻擊者可以上傳PHP文件到你的服務器並設法實際執行它們,那麼戰鬥就會丟失,但上述措施會讓你相當安全的避免意外泄露你的信譽。

+0

我正好在我自己的php CMS引擎中使用這些方法...使用CONSTANT,.htaccess來保護配置文件,並且在數據庫連接建立後立即取消設置db變量... – Night2

1

課程,包括?有很多方法可以做到,但最終如果有人能夠訪問未解析的PHP文件,他們將擁有您的MySQL登錄詳細信息。

2

我不能說這是最好的,但這是我的方式;

我有一個config.php文件,它包含我的數據庫連接憑據,並且不能直接訪問。我有一個需要config.php來建立連接的數據庫類,並且我有一個擴展數據庫類的站點類。

這是一種非常普遍的做事方式,並且被普遍接受。

+0

你選擇在'config.php'中擁有你的數據庫細節而不是作爲DB類的私有變量的任何原因? – BenM

+4

'print_r'轉儲私有變量以及公共;任何意外的剩餘調試可能會暴露證書。 – lanzz

2

你可以做的另一件事情是(如果你的憑據受到損害)是確保你爲PHP設置的任務設置的mysql用戶被禁止使用DROP語句,甚至可以使用DELETE語句數據如此。

爲該用戶提供對其他數據庫可能訪問的最低級別,可能只有持有該用戶數據的最低級別。

+0

這也是一個好主意! – user1670316

相關問題