データベース定数のハードコーディングについては、それほど安全ではありません(他の人が述べているように、どこかにある必要があります...)。ただし、お気づきのように、これらの値を別のファイルに入れることをお勧めします。さらに一歩進んで、ソース管理でこのファイルを追跡するのではなく、サーバーconfig.base.php
にコピーしてconfig.php
構成するようなテンプレートを作成することをお勧めします。他のオプションがあります(私が働いている場合、これらのファイルを追跡しますが$(hostname).php
、いくつかの巧妙なインポートチェーンを可能にする名前を付けますが、必須ではありません)が、これは簡単で安全なオプションであり、これらの値を除外するという利点がありますバージョン管理。これにより、これらのパスワードを提供しなくてもコードを配布できます。
自分自身に関係するより大きなセキュリティの問題は、Webアプリに必要な権限のみを持つように正面を向いたMySQLユーザーをロックダウンすることです。たとえば、一般に、Webサイトでテーブルをライブで使用CREATE
するALTER
ことはお勧めできません。そのため、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>.');
}