这与这个问题有关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 ,然后通知用户他们已注销。这将减轻暴力攻击,但是这会将攻击转换为拒绝服务攻击,因为恶意网站将成功注销用户。因此,您应该通过联系用户并告知他们他们正在访问的网站试图破坏他们来跟进此事(您可以检查您的服务器日志以确定 referer
和 origin
header )。
关于javascript - 在 Angular 中使用持久性 CSRF-TOKEN cookie 的风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666867/