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团队关于此的任何反馈.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...