2012-01-30 95 views
0

可能重複:
Is it ever ok to store password in plain text in a php variable or php constant?存儲在PHP的constans數據庫憑證和安全

我用來存儲在一個PHP文件中像這樣我的數據庫憑據:

<?php 
    define('HOST', 'localhost'); 
    define('USER', 'db_user'); 
    define('PASS', 'user_pass'); 
    define('DB', 'database'); 
?> 

我使用常量,但在最近的一個項目中,其中一個PHP編碼器說,將db證書存儲爲常量s不安全。我不明白。我試圖找到一些信息,但沒有人對此說一無所知。

將數據庫證書存儲到PHP常量中是否存在安全風險?

回答

1

唯一的風險是如果你有文檔根下的定義。在這種情況下,如果您的服務器配置出現問題並且人們可以看到您的PHP代碼,常量(以及數據庫憑證)將會暴露。

最安全的方式(我知道)是將憑據作爲僅限於root的服務器環境的一部分。然後,開發人員可以使用_SERVER['db_user']等。這可能更安全,因爲有權訪問實際DB憑據的人員更加有限。它還使您可以靈活地根據服務器使用不同的憑據(例如,開發與生產)。但是,您可以使用phpinfo(),var_dump($_SERVER)等查看所有服務器環境變量,因此您必須注意不要上傳這些內容。

+0

我不知道。謝謝tandu! – Kete 2012-01-31 08:47:27

1

將數據庫證書存儲到PHP常量中是否存在安全風險?

存儲重要信息(如數據庫的用戶名和密碼)總會有一些風險。

但我無法想象使用常量比使用變量更像是一種安全風險。

然而,潛在的風險是配置是用代碼編寫的。所以它不是真正的靜態。使用配置文件可能更安全,而不需要自行執行。

+0

是的。我不明白爲什麼一個常數可能有風險。他告訴我們要使用DB類的所有數據庫證書。所以PDO的說法是: '$ this-> myconn = new PDO(「mysql:host =」。$ this-> db_host。「; dbport =」。$ this-> db_port。「; dbname =」。$ this-> db_name,$ this-> db_user,$ this-> db_pass);' – Kete 2012-01-31 08:52:06

+0

這實際上是一個更明智的決定。常量在任何地方都可用,如果您有私有對象成員,則需要專門瞭解該位置。攻擊者腳本找到憑據的工作量更大。除此之外(這實際上並不多,但有點),這聽起來好多了。 – hakre 2012-01-31 11:33:25

相關問題