ホームページ >バックエンド開発 >PHPチュートリアル >PHPプログラムの脆弱性の予防方法と原因_PHPチュートリアル

PHPプログラムの脆弱性の予防方法と原因_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:55:57795ブラウズ

インクルードの乱用

1. 脆弱性の理由:

Include は、PHP Web サイトを作成する際に最も一般的に使用される関数であり、相対パスをサポートします。入力変数を Include パラメータとして直接使用する PHP スクリプトが多数あり、任意のスクリプト参照や絶対パスの漏洩などの脆弱性が発生します。次のコードを見てください:

...
$includepage=$_GET["includepage"]
...

明らかに、必要なページを取得するには、さまざまな Includepage 変数を送信するだけです。存在しないページを送信すると、PHP スクリプトでエラーが発生し、実際の絶対パスが漏洩する可能性があります (この問題の解決策は次の記事で説明されています)。

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 ページ:

  • 前のページ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 次のページ

http://www.bkjia.com/PHPjc/364303.html

tru​​ehttp://www.bkjia.com/PHPjc/364303.html技術記事 include の悪用 1. 脆弱性の理由: Include は、PHP Web サイトを作成する際に最も一般的に使用される関数であり、相対パスをサポートします。入力変数を Include パラメータとして直接使用する PHP スクリプトが多数あり、何らかの問題が発生します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。