我们的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保护是否安全/不安全?