我正在构建一个仅将JSON用于其请求和响应内容的Web服务(即,没有表单编码的有效负载)。
如果满足以下条件,Web服务是否容易受到CSRF攻击?
POST
没有顶级JSON对象(例如)的任何请求{"foo":"bar"}
都将被400拒绝。例如,POST
带有内容的请求42
将因此被拒绝。POST
内容类型以外的任何请求application/json
都将被400拒绝。例如,POST
内容类型的请求application/x-www-form-urlencoded
将因此被拒绝。所有GET请求都是Safe,因此不会修改任何服务器端数据。
客户端通过会话cookie进行身份验证,在客户端通过POST使用JSON数据(例如)提供正确的用户名/密码对后,Web服务会为客户端提供会话cookie
{"username":"user@example.com", "password":"my password"}
。
补充问题:是PUT
和DELETE
要求日益容易受到CSRF?我问是因为大多数(全部?)浏览器似乎都不允许以HTML形式使用这些方法。
编辑:添加了项目#4。
编辑:到目前为止,很多好评论和答案,但是没有人提供此Web服务容易受到的特定CSRF攻击。