データベース接続の接続設定(ホスト、dbname、ユーザー、パスワードなど)はどこに置きますか?データベースのクラスまたはファイルに配置されていますか、それとも構成ファイルの外部に配置されていますか、それとも他の場所に配置されていますか?
4 に答える
理想的には、構成ファイルに配置する必要があります。これは、PHP 配列のような単純なものにすることができます。
例: db_config.php
$db_config = array(
'host' => 'localhost',
'user' => 'username',
'password' => 'qwerty'
);
次に、セキュリティを最大限に高めるために、このファイルをドキュメント ルートの外に配置する必要があります。このようにして、Web ホストが失敗し、PHP ファイルをテキスト ファイルとして提供し始めた場合 (実際に発生した場合)、誰も DB 資格情報を取得できません。
さまざまな方法で行うことができますが、一般的なのは設定ファイルに入れ、そのファイルを webroot の外に置いて、データベースのパスワードに関する情報が誤って web に漏洩しないようにすることです。
PostgreSQL の場合、私はpg_service.conf
. すべての接続固有の設定 (ホスト名、データベース名、ユーザー名、パスワードなど) を入れ~/.pg_service.conf
たり、/etc/postgresql-common/pg_service.conf
共通の名前 (サービス名) を付けたりすることができます。
これで、データベースに接続したいプログラム (Perl、PHP など) は"service=name"
、接続文字列として指定するだけで済みます。
私の知る限り、MySQL にはファイル~/my.cnf
または/etc/my.cnf
ファイルに対して同様のメカニズムがあります。