我正在构建一个专门将 JSON 用于其请求和响应内容的 Web 服务(即,没有表单编码的有效负载)。
如果以下情况属实,Web 服务是否容易受到 CSRF 攻击?
任何
POST
没有顶级 JSON 对象的请求,例如{"foo":"bar"}
,都会被 400 拒绝。例如,POST
带有内容的请求42
将因此被拒绝。任何
POST
内容类型不是application/json
400 的请求都将被拒绝。例如,POST
内容类型的请求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 攻击。