ホームページ >php教程 >php手册 >PHP リモート インクルード ファイルの脆弱性分析 ページ 1/6

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

WBOY
WBOYオリジナル
2016-06-13 12:21:171153ブラウズ

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

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

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

この 2 つの構造は、障害の処理方法を除いて同一です。 include() は警告を生成し、require() は致命的なエラーを引き起こします。つまり、ファイルが見つからない場合にページの処理を停止したい場合は、require() を使用します。 include() の場合はそうではなく、スクリプトは引き続き実行されます。
PHP で「allow_url_fopen」が有効になっている場合 (デフォルト設定)、ローカル ファイルの代わりに 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

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