ホームページ  >  記事  >  バックエンド開発  >  PHP リモート インクルード ファイルの脆弱性分析ページ 1/6_PHP チュートリアル

PHP リモート インクルード ファイルの脆弱性分析ページ 1/6_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:43:48886ブラウズ

ほとんどすべての CGI プログラムにはこのようなバグがありますが、具体的な症状は異なります。

1. 危険な関数が含まれています [include()、require() および include_once()、require_once()]

include() && require() ステートメント: 指定されたファイルをインクルードして実行します。

2 つの構造は、障害の処理方法を除いてまったく同じです。 include() は警告を生成し、require() は致命的なエラーを引き起こします。つまり、ファイルが見つからない場合にページの処理を停止したい場合は、require() を使用します。 include() の場合はそうではなく、スクリプトは引き続き実行されます。
「allow_url_fopen」が PHP でアクティブ化されている場合 (デフォルト設定)、ローカル ファイルの代わりに URL (HTTP またはその他のサポートされているカプセル化プロトコル経由) を使用して、含めるファイルを指定することもできます。ターゲット サーバーがターゲット ファイルを PHP コードとして解釈する場合は、HTTP GET の URL リクエスト文字列を使用して、インクルードされたファイルに変数を渡すことができます。
詳細なリファレンス: http://cn.php.net/manual/en/function.include.php

require_once() &&include_once()
require_once() および include_once() ステートメントは、スクリプト実行中に指定されたファイルをインクルードして実行します。この動作は require() ステートメントに似ていますが、唯一の違いは、ファイル内のコードが既にインクルードされている場合、再度インクルードされないことです。これは、スクリプトの実行中に同じファイルが複数回インクルードされる可能性があり、関数の再定義や変数の再割り当てなどの問題を回避するために、ファイルが 1 回だけインクルードされるようにする必要がある状況に適しています。
詳細なリファレンス: http://cn.php.net/manual/en/function.require-once.php

2. ファイルをインクルードする理由

プログラマーはプログラムを作成するときに、同じことをすることを好みません。私は同じコード (一部の一般的な関数など) を何度も書きたくないので、共有する必要があるコードを share.php などの別のファイルに書き、その呼び出しを他のファイルに含めます。 PHP では、この目的を達成するために上記の関数を使用します。 そのワークフロー: main.php に share.php を含める場合は、次のように include("share.php") を記述します。目的は達成されます。 share.php の関数を使用できます。含める必要があるファイル名をハードコーディングしても問題はありません。問題はどこにあるのでしょうか。
どのファイルを含める必要があるかわからない場合があります。たとえば、まず次のファイルindex.phpのコードを見てください:
[code]

if ($_GET)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/320707.html技術記事ほとんどすべての CGI プログラムにはこのようなバグがありますが、具体的な症状は異なります。 1. 危険な関数 [include()、require() および include_once()、require_once()] が含まれています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。