フォームタグがトークン(または他のチャレンジ/レスポンスメカニズム)を使用しないCSRFになりやすいことを知っていますが、iFrameを使用してXSRF攻撃を引き起こす方法と、その軽減策について教えてください。次にコード例を示します。
document.write('<IFRAME SRC="https://somedomain/abcde;src=;type=;cat=;ord=;num='+ a + '?" WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME>');
あなたが与えたコード例は クロスサイトスクリプティング の脆弱性です。これは、「a」が信頼できないと想定して、任意のJavaScriptの実行を許可するためです。
a = "\"); evil(); document.write(\""
悪意のあるサイトは、iframeを使用して [〜#〜] csrf [〜#〜] を介して脆弱なサイトを悪用する可能性があります。
典型的なCSRF攻撃では、ブラウザーは悪意のあるサイトにだまされて、脆弱なサイトにリクエストを送信します。ブラウザーにはそのサイトのCookieが含まれるため、リクエストは脆弱なサイトの観点から認証されます。
GETリクエストをトリガーする方法はいくつかありますが、クロスサイトPOSTリクエストは通常、フォームを送信することによって作成されます。JavaScriptを使用して送信を自動的にトリガーすることはできますが、 結果ページを非表示にします。したがって、単純なPOSTベースのCSRF攻撃では、事後にユーザーに警告が表示されます。
つまり、悪意のある自動送信フォームを非表示のIFrameに配置するのがコツです。したがって、ユーザーには送信結果を示すWebページは表示されません。
関連する攻撃はクリックジャッキングです。脆弱なサイト(Facebookの「いいね!」ボタンなど)が透明なiframeに読み込まれ、 JavaScriptを使用して適切な場所にスクロールし、マウスカーソルの位置を維持します。ユーザーが悪意のあるサイトで何かをクリックしようとすると、代わりに透明なiframeをクリックします。
Iframeはできませんには、クロスサイトリクエストフォージェリまたはクロスサイトスクリプティングの脆弱性があります。 iframeの元の継承ルール が原因で、iframeはこの方法でアプリケーションに影響を与えることができません。
iframeは、攻撃者が I Redress attack で使用します。 CSRF防止のチートシート もお読みください。特に、XSSを使用してCSRF保護システムを弱体化する方法に関する部分。
CSRFの脆弱なアプリケーションがiframeに埋め込まれることを許可している場合、はい。それは攻撃者をどのように助けますか?
サイズをゼロに設定すると、iframeを非表示にすることができます。したがって、目に見えないiframeの場合、被害者が疑わしい何かのアイデアを得る可能性がある通常のcsrfに対して、彼は何も表示しません。
攻撃者は、フォームがiframe内に埋め込まれる犠牲者に代わってフォームを送信します。これはカッコいい。
実際には、アプリケーションがトークンを使用してCSRFを防止し、それでも自分自身をフレーム化できる場合、攻撃者が使用できるもう1つのトリックがあります。
偽のcaptchaメソッドを使用すると、ソーシャルエンジニアリングとJavaScriptを使用して、ユーザーをだましてトークンを送信させることができます。これはFirefoxでのみ機能することに注意してください。
http://blog.kotowicz.net/2011/07/cross-domain-content-extraction-with.html