web-dev-qa-db-ja.com

ASP.NET MVC3のAntiForgeryTokenの実装の詳細と理論的根拠は何ですか?

AntiForgeryTokenは、CSRF攻撃を防ぐために使用されますが、MSDNのリンクでは、AntiForgeryTokenが正確に何を行うのか、どのように機能するのか、なぜそのように行われるのかについてはあまりわかりません。

私が集めたものから、それはウェブページとクッキーの中にハッシュを作成します。それらの一方または両方は、ハッシュされたIPrincipal.Nameを使用し、対称暗号化を使用します。

誰もが次のことについて光を当てることができますか?

  1. AntiForgeryTokenが内部でどのように機能するか
  2. 保護するために何を使用する必要があります
  3. 保護するために使用してはならないもの
  4. 上記の#1の実装の選択の背後にある理由は何ですか?
4

すべてのCSRFは、 cryptographic nonce を使用することで防止されます。これは、 Same-Origin Policy のために攻撃者が取得することはできません。これは、対称暗号化で解決できる問題ではありません。

CSRF防止に関するチートシート を確認してください。

1
rook