注意すべきいくつかの PHP の抜け穴
いくつかの重要な php.ini オプション
グローバルの登録
php>=4.2.0、register_globals が設定されている場合、php.ini の register_globals オプションのデフォルト値はオフです。 On にすると、プログラムはフォームによって送信された変数を含むさまざまな環境変数をサーバーから受け取ることができ、PHP は変数の値を事前に初期化する必要がないため、大きなセキュリティ リスクにつながります。
コードをコピー コードは次のとおりです:
//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 ""
system(" ls -al ".$dir);
echo "";
}
?>
mixed eval(string code_str) // eval インジェクションが通常発生する攻撃者が入力文字列を制御できる場合
//ex2.php
$var = "var"; if (isset($_GET[ "arg"])) { $arg = $_GET["arg"];
= $arg;"); echo "$var =".$ var;
}
?>