CSRF 保护:我们是否必须为每个表单生成一个令牌?
我们是否必须为网站中的每个表单生成一个令牌?我的意思是,每次为每个请求的表单生成不同的令牌?如果没有,为什么?
Do we have to generate a token, for every form in a website? I mean, every-time to generate different token for every requested form? If not, why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一般来说,每个会话一个令牌就足够了,所谓的每个会话令牌:
如果您想进一步增强安全性,您可以为每个表单/URL 使用一个令牌(每个表单令牌),以减轻一个令牌泄漏时的影响(例如XSS),因为攻击者只能成功攻击该特定表格/URL。
但是使用每个请求令牌,即。随着每个请求而变化的令牌,反而会降低网站的可用性,因为它限制了并行浏览:
因此,我建议您使用每会话令牌或每表单令牌。
In general, it suffices to have just one token per session, a so called per-session token:
If you want to further enhance the security, you can use one token per each form/URL (per-form token) to mitigate the impact when one token leaks (e. g. XSS) as an attacker would only be able to successfully attack that specific form/URL.
But using per-request tokens, i. e. tokens that change with each request, rather cuts the usability of the website as it restricts parallel browsing:
So I recommend you to use either per-session tokens or per-form tokens.
不,您只需要在每个-上生成一个令牌会话基础。
令牌不太可能被用户意外泄露,并且如果用户同时在两个不同的选项卡/窗口中浏览网站,则每个表单生成令牌会使事情变得非常复杂。
No, you just need to generate a token on a per-session basis.
Tokens are very unlikely to be leaked accidentally by users and generating a token per form makes things very complicated if a user is browsing the site in two different tabs/windows at once.