特定の php ファイルを使用する必要があり、他のユーザーがこのファイルに直接アクセスできないようにするため、global.php などの他のインクルード ファイルにパラメーターを定義し、それがアクセスされるページ データの前に定義されているかどうかを判断できます。 php このパラメータが定義されていない場合、
は global.php
define('ROOT','./');< で定義されています。 🎜>? >
data.php ファイル内で判断します:
//data.php
if (!define("ROOT")) {
echo "このスクリプトには直接アクセスできません。良い一日を。";
exit();
}
?>
この種のコードは多くのセキュリティを解決できます変数が未定義です [このファイルで定義されていないと言うべきです] などの問題。
しかし、これは脆弱性がローカルに組み込まれるまではほとんど意味がありません。たとえば、
common.php ファイルのコードを見てみましょう:
if ( !define('ROOT') )
{
die(' このファイルには直接アクセスしないでください。');
}
if ( !isset($root_path) )
{
$root_path = './';
}
require_once( $root_path . 'config.php');
?>
!define('X') 制限がない場合、$root_path はここで定義されないため、次のようになります。リモートインクルージョン。
そして、変更されたスクリプトには 2 つの更新によって引き起こされるローカル インクルージョンがあります -->include 攻撃を使用すると、このローカル インクルージョンの脆弱性を利用して common.php をインクルードし、ブレークスルーを引き起こすことができます。 ')、リモート包含に変換します。