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