別のページに渡された HTTP_REFERER をスプーフィングして、宛先ページでリクエストが「正しい」ページから来ていることを判断し、適切なロジックを実行できるようにする必要があります。
- JavaScript (AJAX) でそれを行うにはどうすればよいですか?
- ASP.Netでそれを行うことはできますか?
TIAラム
別のページに渡された HTTP_REFERER をスプーフィングして、宛先ページでリクエストが「正しい」ページから来ていることを判断し、適切なロジックを実行できるようにする必要があります。
TIAラム
一般的に、エクスプロイト、プラグイン、またはその他の拡張機能がなければ、他のブラウザに偽のHTTP_REFERERを返させることはできません。Webブラウザーから送信された値を変更する必要があり、FireFoxを使用している場合は、ModifyHeaders拡張機能を確認してください。
いずれの場合も、HTTP_REFERERが正確であることに依存しないでください。受信したHTTP_REFERERが偽造されていない、または単に送信されていないという保証はありません。
リクエストが「正しい」ページからのものであるかどうかを宛先ページでテストする場合は、リファラーをスプーフィングする必要はありません。別のページからリクエストを発行するだけです。「正しい」と思われるURLとは異なるURLにページを設定し、リンク先ページへのリンクをクリックするか、リンク先からの画像を配置して、そこからリクエストを発行します。
実際にはなりすましができないことは既に述べました。ただし、明確にするために、 HTTP_REFERER ヘッダーはbrowser によって生成されるため、サーバー側では制御できません (javascript を渡すものを含め、有効にする場合と無効にする場合があります)。
特定のヘッダー (「Referer:」など) に対するページの応答をテストするだけの場合は、ほとんどの BSD および Linux バリアント (OS/X を含む) で利用可能なcurlやwgetなどのコマンドライン ツールを使用できます。MS Windows を使用している場合は、Cygwinを使用して curl または wget を取得できます。
wget -O - --referer="http://example.com/some/path" http://example.com/
また
curl -e "http://example.com/some/path" http://example.com/
しかし、これを行う主な理由は、明らかにページを「保護」することだと思います。ページ (「B」と呼びます) が他のページ (「A」) が最初にアクセスされた後にのみアクセスされることを本当に確認したい場合は、サーバー側でより複雑なロジックが必要です。
セッション Cookie を保存している場合は、ブール変数を設定するロジックをページ "A" に埋め込むことができます。次に、変数が設定されていることを確認するロジックをページ "B" に追加します。
読者が ASP.NET でこれを行う方法を理解するための演習として残しておきます。(私は PHP プログラマーなので。;-] )