はい、これだけです。限り、あなたは<%= Html.AntiForgeryToken() %>
で、保護された各ページに新しいトークンを生成し、常にそれがOWASPでCSRF Prevention Cheat Sheetで説明したようにこれは、シンクロナイザトークンパターンを実装し[ValidateAntiForgeryToken]
を使用して、任意の保護されたアクションでチェックされていることを確認して
。
スクリプトが受け入れ可能なリクエストを作成するには、まずフォームを取得してトークンを読み取ってからトークンを送信する必要があります。 Same Origin Policyは、これがブラウザで許可されないようにします。サイトカノットはAJAXスタイルのHTTPリクエストを別のサイトに作成します。それ自身にのみ。何らかの理由で同じ発信元ポリシーが破られた場合、脆弱になります。
クロスサイトスクリプティングの脆弱性が存在する場合、攻撃者はxssの脆弱性を悪用して、同じ発信元ポリシーによって保護されないようにすることができます(スクリプトは自分のサイトから実行されているため、SOPは成功します) 。注入されたスクリプトは、喜んで読んで、トークンを再提出することができます。最近、いくつかのワームでは、XSS経由でCSRF保護機能を使用するこの手法が一般的でした。基本的に、XSSをお持ちの場合、CSRF保護は時間の無駄ですので、どちらにも脆弱でないようにしてください。
注意すべき点として、FlashとSilverlightがあります。これらのテクノロジはどちらも同じ発信元ポリシーに登録せず、クロスドメインポリシーファイルを使用してリモートリソースへのアクセスを制限します。 Flash/Silverlightスクリプトは、自分のサイトにクロスドメインポリシーXMLファイルを公開する場合にのみ、サイトのリソースにアクセスできます。このファイルを公開する場合は、信頼できるサードパーティ製サーバーのホワイトリストを許可し、*を許可しないでください。
読むよりおよそCSRF at OWASP も参照してください:XSS Prevention Cheat Sheet
トークンの検証とは別に、crossdomain.xmlに注意する必要があります。私が正しく理解していれば、crossdomain.xmlのdomain = "*"からallow-http-request-headers(無制限クロスドメインリクエスト)をWebアプリケーションに公開すると、AntiForgeryTokensの目的を破り、サイトCSRFが脆弱になります。 – PanJanek
はい。サーバー上にcrossdomain.xmlポリシーファイルを公開すると、リモートフラッシュムービーでActionScript経由でCSRF攻撃を再開することができます。このファイルを公開すると、信頼できる第三者のみがホワイトリストに登録され、決して*は公開されません。 – Cheekysoft
「サイトはAJAXスタイルのHTTPリクエストを別のサイトに作成できますが、自分自身にのみ」 Googleアナリティクスはどのように機能しますか? 私は、Same-Origin-Policyが別のサイトのクッキーを読んだり変更したりすることができないと考えています。 –