gpt4 book ai didi

php - CSRF token 与多个选项卡冲突

转载 作者:IT王子 更新时间:2023-10-29 00:12:39 25 4
gpt4 key购买 nike

我在我的应用程序中构建了 CSRF 保护,方法是在每个 页面加载时生成一个随机 token ,将其放入 session ,然后将 token 绑定(bind)到 <body> 标记属性如:

<body data-csrf-token="csrf_GeJf53caJD6Q5WzwAzfy">

然后在每个表单操作或 ajax 请求中,我只需从 body 标记中获取 token 并将其发送。

这很好用,除了一个大问题。用户打开应用程序的多个选项卡,我看到 token 冲突。例如,用户加载第一个页面并生成一个 token ,然后他们切换选项卡,加载另一个页面,该页面生成一个新 token 。最后他们切换回第一页并提交格式操作。这会导致无效的 CSRF token 错误。

重新构建它以防止与多个选项卡发生冲突,同时尽可能确保其安全的最佳方法是什么。

是否只是在登录时生成一个单个 token 才是正确的解决方案,而不是在每次加载页面时都生成一个新 token ?

最佳答案

假设您的应用使用 SSL 进行保护,那么在每次页面加载时生成新 token 实际上不会创造任何值(value)。它不会阻止利用 XSS 漏洞的攻击者——他们无论如何都可以访问新生成的 token 。

记住 CSRF token 防御什么:恶意第三方页面盲目地尝试将数据发布到您的应用程序,希望用户已登录。在这种攻击中,攻击者永远无法访问 CSRF token , 所以经常改变它没有好处。

不要浪费时间和资源来跟踪每个 session 的多个 token 。只需在开始时生成一个即可。

关于php - CSRF token 与多个选项卡冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com