リクエストとレスポンスのコンテンツに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攻撃を提供した人は誰もいません。