发现正确的方法以PHP形式验证您的CSRF令牌。了解为什么正确的检查可以有效防止CSRF攻击。 --- This video is based on the question https://stackoverflow.com/q/73312646/ asked by the user 'VCS-Jacob' ( https://stackoverflow.com/u/19530250/ ) and on the answer https://stackoverflow.com/a/73312691/ provided by the user 'Quentin' ( https://stackoverflow.com/u/19068/)在“堆栈溢出”网站上。感谢这些出色的用户和Stackexchange社区的贡献。请访问这些链接以获取原始内容和更多详细信息,例如备用解决方案,有关主题,评论,修订历史记录等的最新更新/开发。此外,内容(音乐除外)在CC BY-SA https://meta.stackexchange.com/help/licensing授权下,原始问题帖子在“ CC BY-SA 4.0'(https://creativecommons.org/licenses.org/licenses/license/blicense/by-sa/4.0/- sa ccccccccccccccccc)下授权。 https://creativecommons.org/licenses/by-sa/4.0/)许可证。如果您似乎有什么事,请随时用vlogize [at] gmail [dot] com写信给我。 --- PHP中的CSRF代币验证:您做对吗?跨站点请求伪造(CSRF)是一个严重的安全威胁,可以损害用户数据并导致Web应用程序中未经授权的操作。在您的表格中实施适当的CSRF保护对于维持网站的完整性和安全性至关重要。在本指南中,我们将探讨围绕PHP中CSRF代币验证的一个常见问题,并对正确的方法提供清晰度。了解CSRF令牌CSRF令牌是为每个用户会话生成的独特,秘密和不可预测的价值。然后将该令牌包含在形式中,以确保对服务器提出的请求是真实的,而不是由恶意演员制作的。这是他们工作方式的简单概述:会话创建:当用户在您的网站上开始会话时,会在会话中生成并存储CSRF令牌。形式包含:然后将此令牌包含在形式中作为隐藏的输入字段。验证:提交表单后,服务器检查表单中的令牌是否匹配会话中存储的一个。令牌验证的问题以下是一个方案:您已经在PHP表单中实现了CSRF令牌,但是您不确定是否正确设置了验证逻辑。让我们分解您当前使用的验证代码:[[请参阅视频以显示此文本或代码段]]关键问题是条件($ _post ['token']!== $ _session ['token'])有效地验证CSRF Token吗?如果您简化验证以检查令牌的存在,会发生什么?验证的重要性这是两个验证方案的分解:原始验证方法[[请参阅视频以显示此文本或代码段]]检查是否存在令牌:第一部分确保令牌以表单提交中存在。与会话令牌匹配:第二部分检查提交的令牌是否与会话中存储的一个匹配。好处:此方法是安全的。攻击者无法预测会话中存储的有效令牌,从而使他们难以利用您的表格。简化的验证方法[[请参阅视频以显示此文本或代码段]]仅检查存在:此条件仅确保存在令牌,但不能验证其针对会话令牌的有效性。风险:这可以允许CSRF攻击。攻击者可以使用任何令牌提交表格,如果用户登录,则可以对请求进行处理,而无需对会话中存储的有效令牌进行任何检查。结论原始验证方法是必要和安全的,因为它验证了CSRF令牌的存在和准确性。删除第二条件会使您的应用程序容易受到CSRF攻击的攻击,因为它可以使恶意请求不受限制地进行。关键要点总是根据会议的存储值来验证CSRF令牌。保护您的表格免受CSRF攻击对于维持网站上的安全性至关重要。通过遵循这些最佳实践,您将有效地保护Web应用程序免受潜在威胁。如果您对CSRF代币实施有任何疑问或需要澄清,请随时在下面的评论部分联系!