我一直在阅读CSRF令牌如何实施以防止CSRF攻击。 OWASP页面(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)和各种文章声明,可以基于每个页面或每个会话生成一个随机唯一标记。 (其中他们建议每个会话生成一次)每个会话信息的CSRF令牌的实现
如果每个会话只生成一个令牌,那么这并不意味着每次使用该会话时使用令牌的所有表单页都必须具有相同的令牌被加载(每当说它被刷新)?但是在大多数实现中,我已经看到了表单的每个负载都有一个不同的随机标记。
它是如何工作的?在服务器端每次成功检查之后,会话中出现的CSRF令牌是否失效?
我只是想知道我是否理解这个权利。我在Stackoverflow和其他博客上阅读了许多类似的问题,但我仍然感到困惑。
谢谢!
那么这是否意味着如果我刷新包含表单的页面,每次直到会话中的令牌过期时令牌都会一样? – Kevin
是的,只要您在请求页面时将所需的会话句柄传递给服务器。你在用什么语言?例如,在PHP中,您可以在页面代码的开头附近调用'session_start()'。第一次访问您的网站时,它不会有CRSF标记,因此您将它添加到'$ _SESSION'数组中。假设您的PHP是以常规方式设置的,则将cookie发送到包含会话ID的浏览器,并且浏览器会返回您网站上任何其他页面请求的cookie。然后,当你调用'session_start()'时,它将拥有你需要的CSRF令牌。 – FKEinternet