ホームページ  >  記事  >  バックエンド開発  >  PHP セキュリティ - HTTP リクエストのスプーフィング

PHP セキュリティ - HTTP リクエストのスプーフィング

黄舟
黄舟オリジナル
2017-02-22 09:19:331426ブラウズ



HTTPリクエストのスプーフィング

フォーム スプーフィングより高度かつ洗練された攻撃は、HTTP リクエスト スプーフィングです。これにより、攻撃者に完全な制御と柔軟性が与えられ、ユーザーが送信したデータは盲目的に信頼できないことがさらに証明されます。

これがどのように機能するかを示すには、http://www.php.cn/ にある以下のフォームを参照してください。 「選択」ボタンをクリックすると、ブラウザーは次の HTTP リクエストを発行します:

CODE:

 <form action="process.php"
method="POST">
  <p>Please select a color:
  <select name="color">
    <option value="red">Red</option>
    <option
value="green">Green</option>
    <option
value="blue">Blue</option>
  </select><br />
  <input type="submit" value="Select"
/></p>
  </form>


.

ほとんどのブラウザにはオリジン URL 値が含まれているため、なりすましを防ぐために $_SERVER['HTTP_REFERER'] 変数を使用したくなるかもしれません。確かに、これは標準ブラウザを使用した攻撃に対して使用できますが、攻撃者はこのちょっとした煩わしさでは阻止されません。攻撃者は、HTTP リクエストの生の情報を編集することで、HTTP ヘッダーの値、GET データと POST データ、および HTTP リクエスト内のすべてのコンテンツを完全に制御できます。

攻撃者はどのようにして元の HTTP リクエストを変更するのでしょうか?プロセスは非常に簡単です。ほとんどのシステム プラットフォームで提供されている Telnet ユーティリティを介して、Web サーバーのリスニング ポート (通常はポート 80) に接続することで、Web サーバーと直接通信できます。以下は、この手法を使用して http://www.php.cn/ ページをリクエストする例です。例は HTTP です。ヘッダー情報にホスト情報が必要なため、/1.1 仕様の最も単純なリクエストです。リクエストの終わりを示す 2 つの連続した改行を入力すると、HTML レスポンス全体が画面に表示されます。

Telnet ユーティリティは Web サーバーと直接通信する唯一の方法ではありませんが、多くの場合、これが最も便利です。ただし、同じリクエストを PHP でエンコードすると、自動化できます。前のリクエストは次の PHP コードで実現できます:

CODE:

 POST /process.php HTTP/1.1
  Host: example.org
  User-Agent: Mozilla/5.0 (X11; U; Linux i686)
  Referer: http://www.php.cn/
  Content-Type:
application/x-www-form-urlencoded
  Content-Length: 9
 
  color=red

もちろん、上記の目的を達成するには多くの方法がありますが、重要な点は次のとおりです。 HTTP はよく知られた標準プロトコルであり、経験豊富な攻撃者はよく知っており、一般的なセキュリティ脆弱性の攻撃方法にも精通しています。

フォームのなりすましに比べて、HTTP リクエストをなりすます方法はそれほど多くないため、注意を払う必要はありません。これらの手法について説明する理由は、攻撃者がアプリケーションに悪意のある情報を入力することがいかに簡単であるかをよりよく示すためです。これは、入力のフィルタリングの重要性と、HTTP リクエストによって提供される情報は信頼できないという事実を再度強調しています。


上記は、PHP セキュリティ - HTTP リクエスト スプーフィングの内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注意してください。

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