PHP CSRF表单令牌+验证建议

5
我有一个提交表单,其中有9个字段,其中6个需要验证,包括一个具有文件大小和文件类型验证的上传字段。
生成随机令牌以防止CSRF攻击是有效的,但在使用令牌时正确的验证方式是什么?
如果我在同一文件中进行验证,则验证重新加载时会重新生成令牌。(这可以预防吗?我已经尝试了isset(),但仍会重新生成。)但是,在同一文件中进行验证会导致用户的名称和电子邮件无法存储在会话中。
最好在单独的文件中进行验证,然后使用基本变量在URL中为每个错误重定向回表单,例如http://www.example.com/form?n=1。
使用单独的文件还意味着在会话中存储表单数据,因此如果重定向存在错误,则可以重新填充表单。
非常感谢您的帮助。

我发现Chris的这篇文章非常好,它很好地解释了什么是CSRF以及如何保护自己免受其攻击。 - Alfred
谢谢,他比书中讲得更好。 - Chris Eagle
md5(uniqid(rand(), TRUE));在安全上下文中不应被信任。https://dev59.com/aG015IYBdhLWcg3w9wp1#31683058 - Edward
1个回答

1

从经验来看,CodeIgniter 在 CSRF 实现 方面表现出色,还有其他安全措施。我建议您查看他们的代码,以获得对整个过程的深入理解。另外请参见this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接