ホームページ  >  記事  >  バックエンド開発  >  PHPの脆弱性を詳しく解説

PHPの脆弱性を詳しく解説

WBOY
WBOYオリジナル
2016-06-23 14:32:57957ブラウズ

いくつかの重要な 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;

}

?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。