なりすましフォームの作成は、URL を偽造するのとほぼ同じくらい簡単です。結局のところ、フォームの送信はブラウザによって行われる単なる HTTP リクエストです。リクエストの形式の一部はフォームによって異なり、リクエスト内のデータの一部はユーザーから取得されます。
ほとんどのフォームは、相対 URL アドレスを使用してアクション属性を指定します:
<form action="process.php" method="POST">
フォームが送信されると、ブラウザはアクションで指定された URL を要求し、現在の URL アドレスを使用して相対 URL を見つけます。たとえば、前のフォームが http://www.php.cn/ へのリクエストに応じて生成された場合、ユーザーがフォームを送信した後、URL アドレス http://www.php.cn/ がリクエストされます。
これを知っていると、絶対アドレスを指定してフォームをどこにでも配置できることは容易に想像できます。 このフォームはどこにでも配置でき、このフォームを使用して作成された提出物は元のフォームで作成されたものと同じです。これに気づいた攻撃者は、アクションを絶対 URL アドレスに変更しながら、ページのソース ファイルを表示してサーバーに保存することができます。これらのメソッドを使用すると、攻撃者はフィールドの最大長制限の削除、ローカル検証コードの削除、隠しフィールドの値の変更、より柔軟な目的のために要素の型を書き換えるなど、フォームを任意に変更できます。これらの変更は、攻撃者がサーバーにデータを送信するのに役立ちます。また、プロセスが非常にシンプルで簡単であるため、攻撃者は専門家である必要はありません。
スプーフィングされたフォーム攻撃を防ぐことはできません。これは少し奇妙に思えるかもしれませんが、実際には真実です。しかし、これについて心配する必要はありません。入力を正しくフィルタリングすると、ユーザーは送信方法に関係なく、ルールに従う必要があります。
この手法を試してみると、ほとんどのブラウザでは、前のページのアドレスを識別するために HTTP ヘッダーに Referer メッセージが含まれていることがわかります。この例では、Referer 値はフォームの URL アドレスです。これに騙されず、フォーム送信となりすましのフォーム送信を区別するために使用してください。次のセクションのデモでは、HTTP ヘッダーも非常に簡単に偽造でき、Referer を使用して判定する方法がよく知られていることがわかります。
上記は、PHP セキュリティ スプーフィング フォーム送信の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください。