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