微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 绕过XHR的CSRF保护是否安全? (导轨)

我们的webapp的一个组件是(或多或少)SPA.即它使用 javascript运行,并且不会生成任何页面查看或刷新.这可能导致CSRF令牌过时.特别是对于移动电话用户,可能会在几天/几周后关闭浏览器并打开它.此SPA偶尔需要POST更新到服务器.

我们看到一些生成422错误的javascript POST请求,并提供有关CSRF保护的警告.我很确定CSRF令牌存在,但是陈旧.我正试图找到最好的方法.

如果我理解正确,并且根据OWASP CSRF Cheat Sheet,只要CORS未在同一端点上打开,XHR请求应该是安全的.也就是说,恶意站点无法在没有javascript的情况下使用XHR头创建请求.使用javascript,请求应该被阻止,因为它是跨域的.

唯一的资源I found一个相当容易混淆的例子,其中json禁用了CSRF保护.我无法确定是建议这样做,还是避免它.

因此,在未启用CORS的rails上关闭对XHR / json请求的CSRF保护是否安全/不安全?

解决方法

简短的回答是它是安全的,但你需要小心CORS.

以下是文档更改I suggested到rails的片段:

It is generally safe to exclude XHR requests from CSRF protection
(like the code snippet above does),because XHR requests can only be made from
the same origin. Note however that any cross-origin third party domain
allowed via 07001
will also be able to create XHR requests. Be sure to check your
CORS whitelist before disabling forgery protection for XHR.

请注意,我还没有收到rails团队关于此的任何反馈.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐