インクルードの乱用
1. 脆弱性の理由:
Include は、PHP Web サイトを作成する際に最も一般的に使用される関数であり、相対パスをサポートします。入力変数を Include パラメータとして直接使用する PHP スクリプトが多数あり、任意のスクリプト参照や絶対パスの漏洩などの脆弱性が発生します。次のコードを見てください:
...
$includepage=$_GET["includepage"]
...
2. 脆弱性の解決:
この脆弱性に対する解決策は非常に簡単で、最初にページが存在するかどうかを確認し、それを含めることです。より厳密には、配列を使用して、含めることができるファイルを指定します。次のコードを見てください:
$pagelist=array("test1.php","test2.php","test3.php"); //インクルードできるファイルを指定します
if(isset($_GET["includepage"]) // $includepage があるかどうかを確認します
{
$includepage=$_GET["includepage"];
foreach($pagelist as $prepage)
{
if($includepage==$prepage) // ファイルが許可リスト
{
include($prepage);
break;
}
}
if($checkfind==true) }
else("無効な参照ページ) !") ; }
}
これで問題は非常にうまく解決されます。
ヒント: この問題が発生する関数には、require()、require_once()、include_once()、readfile() などが含まれます。記述する際には注意してください。
入力変数はフィルタリングされません
合計 8 ページ:
http://www.bkjia.com/PHPjc/364303.html