CSRF-XHR请求的预防

时间:2015-03-25 07:21:11

标签: javascript ajax cookies xmlhttprequest csrf

我刚刚了解了CSRF预防的细节。在我们的应用程序中,所有“写入”请求都是使用XHR完成的。在整个页面中实际上没有提交单个表单,一切都是通过XHR完成的。

对于这种情况,维基百科建议Cookie-to-Header Token。在那里,一些随机值在登录期间(或在其他某个时间点)存储在cookie中。在发出XHR请求时,会将此值复制到自定义http-header(例如“X-csrf-token =”),然后由服务器检查。

现在我想知道,如果在这种情况下实际上需要随机值。我认为仅仅设置一个自定义标题就足够了“X-anti-csrf = true”。似乎比拖动随机值更稳定。但这会打开任何安全问题吗?

1 个答案:

答案 0 :(得分:1)

这取决于您想要做出多少风险假设。

  1. 您已正确配置CORS标头,
  2. 并且用户的浏览器尊重他们,
  3. 因此恶意网站无法向您的域发送XHR,
  4. 这是使用请求发送自定义标头的唯一方法

如果你相信所有这一点,肯定会有一个固定的自定义标题。 如果删除任何假设,那么您的方法将失败。

如果你无法猜测标题,那么你就不需要做出这些假设。您仍然依赖于这样一种假设,即该标题的价值不会被第三方拦截和复制(其中包含TLS)。