我正在构建一个 Web 服务,它专门使用 JSON 来处理请求和响应内容(即,没有表单编码的有效负载)。
如果下列情况属实,Web 服务是否容易受到 CSRF 攻击?
任何没有顶级 JSON 对象的 POST
请求,例如 {"foo":"bar"}
,将被400拒绝。例如,内容为 42
的 POST
请求将因此被拒绝。
任何内容类型不同于 application/json
的 POST
请求都将被400拒绝。例如,内容类型为 application/x-www-form-urlencoded
的 POST
请求将因此被拒绝。
所有 GET 请求都将是 安全,因此不会修改任何服务器端数据。
客户端通过一个会话 cookie 进行身份验证,Web 服务会在客户端通过一个 POST (包含 JSON 数据)提供正确的用户名/密码对(例如 {"username":"user@example.com", "password":"my password"}
)后提供这个 cookie。
附带问题: PUT
和 DELETE
请求是否容易受到 CSRF 的攻击?我这样问是因为看起来大部分(所有?)浏览器不允许在 HTML 表单中使用这些方法。
编辑: 添加项目 # 4。
编辑: 到目前为止有很多好的评论和答案,但是没有人提供这个 Web 服务易受攻击的特定 CSRF 攻击。