以前の回答で概説したように、最も重要なセキュリティ対策は、適切な Web サーバーの構成です。
直接アクセスしてはならない構成ファイルを作成しているので、サーバーのルートの外、またはサーバーがファイルを提供しないように構成されているディレクトリに安全に配置できます。ファイルに適切なアクセス許可がinclude()
ある限り、Web サーバーの助けを借りずにアクセスできます。
何らかの理由で構成ファイルをアクセス可能な場所に置くことに固執する場合は、define()
トリックを使用して不正な実行を防ぐことができます。これは、実際の の前に構成ファイルを含めるようにファイルに定数を定義してから、構成include()
ファイル自体に定数が存在するかどうかをチェックすることによって行われます。
example.php:
<?php
define ('my_const', 1);
include ('config.php');
echo $super_secret_data;
?>
config.php:
<?php
if (!defined ('my_const'))
die ();
$super_secret_data = 42;
?>
もちろん、ここでの唯一のセキュリティ上の利点は、ページが直接アクセスされた場合に実行可能コードが定数なしでは実行されないことと、そのデータが const を定義していないファイルからアクセスできないことです (これは、あいまいさによるかなり悪いセキュリティです。おそらくまだgetfilecontents()
ファイルを呼び出すことができます)。