リクエストとレスポンスのコンテンツにJSONのみを使用する(つまり、フォームでエンコードされたペイロードを使用しない)Webサービスを構築しています。
次の場合、WebサービスはCSRF攻撃に対して脆弱ですか?
どれでも
POSTトップレベルのJSONオブジェクトのない要求は、例えば、{"foo":"bar"}たとえば、400で拒否されますが、POST内容の要求は42これ拒否されるだろう。任意
POST以外のコンテンツ・タイプの要求application/json例えば400で拒否されますが、POSTコンテンツタイプの要求はapplication/x-www-form-urlencoded、したがって拒否されるであろう。すべてのGETリクエストは安全であるため、サーバー側のデータは変更されません。
クライアントはセッションCookieを介して認証されます
{"username":"user@example.com", "password":"my password"}。これは、JSONデータを使用したPOSTを介して正しいユーザー名とパスワードのペアを提供した後にWebサービスがクライアントに提供します。
補助的な質問:CSRFに対して脆弱なものはPUTありDELETEますか?ほとんどの(すべて?)ブラウザがHTMLフォームでこれらのメソッドを許可していないように思われるので、私は尋ねます。
編集:アイテム#4を追加しました。
編集:これまでのところ多くの良いコメントと回答がありますが、このWebサービスが脆弱な特定のCSRF攻撃を提供した人は誰もいません。