いくつかの重要な php.ini オプション
グローバルの登録
php>=4.2.0、php.ini の register_globals オプションのデフォルト値はデフォルトで Off です register_globals が On に設定されている場合、プログラムはサーバーからメッセージを受信できます。フォーム送信変数を含むさまざまな環境変数、および PHP は変数の値を事前に初期化する必要がないため、大きなセキュリティ リスクにつながります
例 1:
//check_admin() は現在の状態を確認するために使用されます。ユーザー権限。 $is_admin 変数を true に設定し、この変数が true であるかどうかを判断し、いくつかの管理操作を実行するのは管理者です
//ex1.php
if (check_admin())
{
$is_admin = true ;
}
if ($is_admin)
{
do_something();
}
?>
このコード$is_admin を Flase に初期化しません事前に、 register_globals が On の場合、 http://www.sectop.com/ex1.php?is_admin=true を直接送信して check_admin() の検証をバイパスします
例 2:
//ex2.php
if (isset($_SESSION ["username"]))
{
do_something();
}
else
{
echo "ログインしていません!";
} ?>//ex1.php
$dir = $_GET["dir"];
if (isset($dir))
{
echo "
";<p> system("ls -al ".$dir);</p><p> echo "</p>";
}
?>
mixed eval(string code_str) //evalインジェクションは通常、攻撃者が入力文字列を制御できる場合に発生します
//ex2.php
$var = "var";
if (isset($_GET[" arg"]))
{
$arg = $_GET["arg"];
eval("$var = $arg;");
echo "$var =" .$var;
}
?>