CSRFの実施方法について質問があります。 WebGoatでCSRFプロンプトバイパスレッスンを行いました(レッスン->クロスサイトスクリプティング-> CSRFプロンプトバイパス)。このレッスンでは、受信者がログインしているWebアプリに2つの悪意のあるリクエストを送信する電子メールメッセージを作成する必要があります。最初のリクエストは送金金額を設定します。 2つ目は、ユーザーが確認ページで[確認]をクリックしたときに送信される確認要求です。
リクエストをHTTP Postリクエストとして送信するJavaScriptコードを使用してタスクを解決しました。別のオプションとしては、フォームとJavaScriptを使用してフォームを自動的に送信する方法があります。
私の質問は、なぜsrcを必要なパラメーターを含むターゲットURLに設定したimgタグまたはiframeを使用してレッスンを解決するように思われるのですか? HTTPを使用して送金が行われることを期待しますPOSTリクエストではなく、GET。 JavaScriptコードを使用したり、CSRFの無効または問題のあるメソッドを形成したりする側面はありますか?前述のタスクと比較すると、実際的な違いはありますか? CookieをJavaScriptフェッチで送信したり、フォームを送信したりできるので、認証はそうではないと思います。
JavaScript、IMOではなくこれらのタグを使用する理由は次のとおりです。
-初期の記事/出版物の例
-ユーザーが画像/ iframeを投稿できるアプリケーション(BBCode、Markdownなど)
-純粋なHTMLとデモの容易さ
以前の例ではimgまたはiframeタグを使用していました。JavaScriptXHRがまだ利用できず、おそらくすべてのブラウザーでスクリプトの実行が許可されているわけではないためです。また、ブラウザーでの実装の違いにより、スクリプトが簡単に壊れる可能性があります。
第2に、ユーザーがMarkdownまたはHTML imgタグを介して画像を投稿できるアプリケーションを見つけることは珍しくありません。ただし、JavaScriptスニペットやイベントハンドラーは許可されません。これらはすでに、以前より多くの視聴者をターゲットにするために使用されています。
第3に、JavaScriptを有効にしたり、NoScriptなどでブロックしたりする必要がありません。攻撃を実証するのは簡単で簡単です。
これらは私の推論にすぎません。本当の理由は異なり、私のものと矛盾するかもしれません。修正していただければ幸いです。
上記のシナリオで、JavaScriptの概念実証よりもimg
およびiframe
の使用を好む2つの主な理由を考えることができます。