如果我有:
- 一个域上的 Web 前端。
- 另一个域上的 REST API。
- 通过设置 header 将 REST API 服务器配置为仅允许来自 Web 前端域的跨源请求
Access-Control-Allow-Origin
到 Web 前端域。
除了需要跨越更多障碍之外,CSRF 还提供哪些额外的安全性?攻击者不能POST
到我的后端,而不首先将他们的代码注入到 Web 前端,对吧?
关于这个问题 https://stackoverflow.com/questions/10741339/do-csrf-attack-worries-apply-to-apis,克里斯·帕拉特说,"[...]So, yes, I think as a rule any API view should be CSRF exempt.[...]"
。这个概念有效吗?它是否包括我的拓扑?
在我的配置中,正确配置了 CORS,我是否需要装饰GET
, POST
, PUT
, DELETE
来自 Web 前端的带有 Cookie 的请求and数据元素 CSRF 令牌?
Meta:
开明的人可能会认为这个问题是重复的,但我已经读过this https://stackoverflow.com/questions/10741339/do-csrf-attack-worries-apply-to-apis,
this http://blog.codinghorror.com/preventing-csrf-and-xsrf-attacks/,
this https://stackoverflow.com/questions/24680302/csrf-protection-with-cors-origin-header-vs-csrf-token,
this https://stackoverflow.com/questions/17507206/how-to-make-a-post-simple-json-using-django-rest-framework-csrf-token-missing-o,
this https://docs.djangoproject.com/en/dev/ref/csrf/#ajax,
this https://docs.djangoproject.com/en/dev/ref/csrf/,
and this https://stackoverflow.com/questions/16501770/csrf-exempt-failure-apiview-csrf-django-rest-framework,
我还需要一些帮助。请帮助我进一步充实这个想法。
在从域加载的页面上下文中,CORS 仅控制浏览器是否可以read来自另一个域的 XHR 响应。它不控制浏览器可以发出请求的域to。也就是说,CORS将放宽同源政策 http://en.wikipedia.org/wiki/Same-origin_policy对于标头设置的任何来源 - 但同源策略中没有任何内容表明不能首先发出请求。
其他域仍然可以 GET 和 POST 到您的域,只是您的站点生成的任何响应都无法在客户端脚本中读取,除非 CORS 允许。实际的 GET 和 POST 仍然由您的服务器接收并处理 https://stackoverflow.com/a/26526630/413180.
因此,您仍然需要 CSRF 预防 - 即使对于使用 CORS 兼容浏览器的用户也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)