首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JSON web服务易受CSRF攻击吗?

JSON web服务易受CSRF攻击吗?
EN

Stack Overflow用户
提问于 2012-06-13 13:03:51
回答 5查看 36.8K关注 0票数 90

我正在构建一个专门使用JSON作为其请求和响应内容的web服务(即,没有表单编码的有效负载)。

如果满足以下条件,则是易受CSRF攻击的web服务?

  1. 任何没有顶级JSON对象的POST请求,例如{"foo":"bar"},都将被拒绝,返回400。例如,内容类型为42POST请求将因此被拒绝。
  2. 任何内容类型不是application/jsonPOST请求都将被拒绝,并显示400。例如,具有内容类型cookie的POST请求将是这样的,因此data.
  3. Clients GET请求将是Safe,并且因此不修改任何服务器侧cookie通过会话cookie进行认证,在它们经由具有JSON数据的POST (例如{"username":"user@example.com", "password":"my password"}.

)提供正确的用户名/口令对之后,web服务向它们提供会话cookie

辅助问题:PUTDELETE请求是否容易受到CSRF的攻击?我这么问是因为看起来大多数(全部?)浏览器不允许在HTML表单中使用这些方法。

编辑:新增项目#4。

编辑:到目前为止,有很多很好的评论和答案,但还没有人提供该web服务易受攻击的特定CSRF攻击。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-14 06:42:52

只有XHR才能有效地伪造具有任意媒体类型的任意CSRF请求,因为form’s method is limited to GET and POSTform’s POST message body is also limited to the three formats application/x-www-form-urlencoded, multipart/form-data, and text/plain。然而,with the form data encoding text/plain it is still possible to forge requests containing valid JSON data

因此,唯一的威胁来自基于XHR的CSRF攻击。而且只有当它们来自相同的来源时,它们才会成功,所以基本上是从你自己的网站(例如XSS)。注意不要将禁用CORS (即不设置Access-Control-Allow-Origin:*)误认为是一种保护。CORS只是阻止客户端读取响应。整个请求仍然由服务器发送和处理。

票数 78
EN

Stack Overflow用户

发布于 2018-09-28 07:57:13

是的,这是可能的。您可以设置一个攻击者服务器,它会将307重定向发送回目标服务器和受攻击的机器。你需要使用flash来发送帖子,而不是使用表单。

参考:https://bugzilla.mozilla.org/show_bug.cgi?id=1436241

它也可以在Chrome上运行。

票数 3
EN

Stack Overflow用户

发布于 2016-03-18 18:39:47

可以使用Ajax在基于JSON的Restful服务上执行CSRF。我在一个应用程序上进行了测试(使用Chrome和Firefox)。为了避免印前检查请求,您必须将contentType更改为文本/纯文本,并将dataType更改为JSON。然后可以发送请求,但是为了发送会话数据,需要在ajax请求中设置withCredentials标志。我在这里更详细地讨论这一点(包括参考资料):

http://wsecblog.blogspot.be/2016/03/csrf-with-json-post-via-ajax.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11008469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档