CSRFについて私が知っていることは、悪意のあるWebサイトが通常のユーザーをだまして、フォームを使用して信頼できるWebサイトにリクエストを発行することです。
フォームを別のドメインに投稿できるため、それが可能であることを理解しています。ただし、Stackoverflowの投稿には、トークンを使用してAJAXリクエストも保護する必要があるとの記述があります。
Same-Originポリシー AJAXリクエストは、スクリプトのロード元のドメインにのみ発行されるように強制しませんか?
Cross-Origin resource sharing について聞いたことがありますが、私の理解が正しければ、それを有効にするためにWebサーバーが必要なので、通常のサーバーではそのようなリクエストを許可しないでください。
リクエストは引き続き送信できます 読み取られない :
- 通常、クロスオリジン書き込みが許可されています。例は、リンク、リダイレクト、フォームの送信[原文のまま]です。
- 通常、クロスオリジン読み取りは許可されていません。
したがって、CORSなしでクロスドメインで使用できるのは特定のヘッダーのみですが、応答の読み取りだけが要求自体の作成ではなく、同一生成元ポリシーによって保護されます。たとえば、次のヘッダーのみが許可されます。
- 受け入れる
- 受け入れ言語
- コンテンツ言語
- 最終イベントID
- コンテンツタイプ
X-Requested-With などのその他は許可されないため、カスタムヘッダーの存在は、リクエストがクロスドメインまたは非AJAXフォームから作成されていないことの検証として確認できます。
古いバージョンのフラッシュには ヘッダーの設定 を許可する脆弱性があり、通常はブラウザーによって制限され、 別の脆弱性 がクロスドメインリクエストを許可することに注意してください。リクエストを許可するために有効なcrossdomain.xml
なしで作成されるため、 トークンベースのアプローチ は、最も安全な防止方法である可能性があります [〜#〜] csrf [〜# 〜] 。