關於硬編碼數據庫常量(正如其他人所說的,他們必須在某個地方......)沒有什麼可怕的不安全感,儘管像你注意到將這些值放在單獨的文件中是個好主意。我建議更進一步,不要在源代碼控制中跟蹤此文件,而是創建一個模板,例如config.base.php
,您將其複製到config.php
並配置每個服務器。還有其他的選擇(我工作的地方,我們跟蹤這些文件,但是將它們命名爲$(hostname).php
,它允許一些聰明的導入鏈接,但不是必須的),但這是一個簡單而安全的選項,其優點是保持這些值你的版本控制。這允許代碼在沒有提供這些密碼的情況下分發。
更關心自己的安全問題是鎖定前面的MySQL用戶,使其只具有需要web應用程序擁有的權限。例如,對於您的網站而言,一般不宜使用表格,因此通常不要將這些權限授予您的網站使用的用戶,並且擁有與您使用不同的,更高權限的用戶直接使模式更改脫機。
你的問題,我做了一個common.php
類下面創建我的MySQLi連接:
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');
$db = @new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_DB);
if(mysqli_connect_errno())
{
if(DEBUG_MODE)
$template->error('Failed To Connect To Database: '.mysqli_connect_errno().': '.mysqli_connect_error());
else
$template->error('Failed To Connect To Database. Try reloading the page. If this error persists, <a href="/contact.php">let me know</a>.');
}
爲什麼硬編碼有安全風險? –
我建議你使用PDO。 PDO爲您提供一個數據庫抽象層和所有訪問數據的類,包括連接。 – slash28cu