PHP は、URL のインポートとステートメントの実行を許可していることでよく批判されます。実際、これはリモート URL インクルード脆弱性と呼ばれる PHP アプリケーションの脆弱性の最も重要な原因の 1 つであるため、これはそれほど驚くべきことではありません。
このため、多くのセキュリティ研究者は、php.ini 設定でのallow_url_fopen へのポイントを無効にすることを推奨しています。残念ながら、このアプローチを推奨する人の多くは、これにより多くのアプリケーションが破損すること、およびリモート URL のインクルードとそれによってもたらされるセキュリティ上の不安を 100% 保証するものではないことを認識していません。
多くの場合、ユーザーは、PHP で URL の組み込みの無効化を許可するように要求し、他のファイル システム関数を使用するときに宣言のサポートを要求します。
このため、PHP6 では、allow_url_include が提供される予定です。これらの議論の後、これらの機能は php5.2.0 にバックポートされました。現在、ほとんどのセキュリティ研究者はアドバイスを変更し、allow_url_include を無効にすることのみを人々にアドバイスしています。
残念ながら、allow_url_fopen とallow_url_include は問題の原因ではありません。一方で、攻撃者はセッションデータ、ファイルアップロード、ログファイルなどを介して PHP コードを入手することが多いため、アプリケーションにローカル ファイルを含めることは依然として十分に危険です...
allow_url_fopen およびallow_url_include は、URL としてマークされた URL ハンドルのみを保護します。これは http および ftp に影響しますが、php または date (php5.2.0 の新機能) URL には影響しません。これらの URL フォームは非常に単純です。php コード インジェクションを実行します。 。
例 1: php://input を使用して POST データを読み取ります
// 安全でない Include
// 次の Include ステートメントは
// POST されたものをすべてインクルードして実行します
// サーバーに送信します
include "php://input";
?>
例 2: データを使用: 任意のコードをインクルードします
// 安全ではない Include
// 次の Include ステートメントは
// Base64 でエンコードされたものをインクルードして実行します
// ここでは単なる phpinfo( ;これらは、単にフィルターがベクトルをフィルター処理することがほとんどないためです。この URL に含まれる脆弱性を 100% 解決する方法は、Suhosin 拡張機能
元のアドレス: http://blog.php-security.org/archives/45-PHP-5.2.0-and-allow_url_include です。 html