我一直對 php-based 的密碼防護有蠻大的顧慮,將連線帳號密碼以明碼的方式寫入 php 設定檔中,感覺實在甚不安全。剛好在升級 xoops 系統時,爬文看到此篇:「把管理者帳號和密碼從Mainfile.php中移出來」 。想說應該同樣的方式也適用在 b2evolution 的系統下!
原理其實很簡單,b2 的帳號密碼是放在 \conf\_basic_config.php 中,不要把帳號密碼放在這裡,而是改成:
$db_config = array( 'user' => $db_user, // your MySQL username 'password' => $db_passwd, // ...and password 'name' => $db_name, // the name of the database 'host' => 'localhost', // MySQL Server (typically 'localhost') );
而帳號密碼抽離出來,另存成一個檔案,就名為 b2evolution-auth.php ,放在 securedata 目錄下 (目錄與檔案名稱均可自訂) :
$db_user = "username"; //database username here $db_passwd = "password"; //database password here $db_name = "b2evolution"; //your database name here
而在原來的 _basic_config.php 內容中,在第一行加入如下:
include ("/home/hsdctw/securedata/b2evolution-auth.php");
該檔案存放的位置就是重點了。可不是存在 b2evolution 的子目錄下,而是應該儲存在你的 home 目錄,或者是在虛擬主機給你的根目錄下。例如以我的為例,就是放在 /home/securedata 下。如此除非 Hacker 有登入虛擬主機系統的權利,否則是無法從 web 下讀取到該檔案的內容,自然這也就形成密碼保護的目的了。
Hi yjchen:
原來如此,是早已有的手法。^^
恩,Debian 一貫也是這樣子的做法。