javascript - 在 Angular 中使用持久性 CSRF-TOKEN cookie 的风险

标签 javascript angularjs security csrf

这与这个问题有关CSRF Protection for Refresh Token Cookie in SPA

我想使用推荐的 XSRF-TOKEN cookie 机制来保护另一个 HttpOnly cookie。对于这种情况,我需要使 XSRF-TOKEN cookie 持久存在,因为它必须在应用程序重新加载后启动时可用。 Angular $http 中的默认实现仅在 session cookie 中查找。

如果我使 cookie 持久化并手动设置 X-XSRF-TOKEN HTTP header ,会有什么风险?

最佳答案

What are risks if I make the cookie persistent and manually set the X-XSRF-TOKEN HTTP header?

风险在于攻击者最终可能会暴力破解 token 值。

建议每个 session 使用一个新的 CSRF token 。如果你让它持久化,那么恶意站点可能会继续尝试提交一个跨站点请求,每次都包含不同的 token 值。最终它将尝试 token 字符的每一种组合并成功发出请求。

但实际上,用户必须同时且每次都访问恶意网站。记住用户打开的选项卡并每次自动加载的浏览器可能会发生这种情况。

您还可以内置一些暴力破解保护。例如,在使用无效的 CSRF token 发出 10 次请求后,您可以中止 session ,然后通知用户他们已注销。这将减轻暴力攻击,但是这会将攻击转换为拒绝服务攻击,因为恶意网站将成功注销用户。因此,您应该通过联系用户并告知他们他们正在访问的网站试图破坏他们来跟进此事(您可以检查您的服务器日志以确定 refererorigin header )。

关于javascript - 在 Angular 中使用持久性 CSRF-TOKEN cookie 的风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666867/

相关文章:

javascript - 停止 setInterval

javascript - 将类添加到动态表中当前 tr 的 td 的输入

c# - AngularJS 与 ASP.NET MVC 混淆

css - Ejs - 我们如何将鼠标悬停在 ejs 文件中?

angularjs - 将 ngMap 与 tabset 一起使用 - 只会启动第一个选项卡

javascript - jQuery 的 after 方法不适用于新创建的元素

javascript - 禁用 JavaScript 在页面中加载任何内容的能力

java - 如何使用 crypto-js 库在客户端加密消息并在 Java 服务器上解密

java - 我们可以将 java .class 转换为 .java 文件吗?那么 java 是如何被称为安全语言的呢?

javascript - jquery - ajaxStop 没有一致地执行 javascript 重定向