我有一个提交表单,有9个字段,其中6个字段需要验证,包括带文件大小和文件类型验证的上传字段。
生成随机令牌以防止CSRF正在运行,但使用令牌时验证的正确方法是什么?
如果我在同一文件中进行验证,则会使用验证重新加载来重新生成令牌。 (这可以防止吗?我已经尝试isset()
但仍然重新生成。)但是,使用相同的文件会阻止用户名称和电子邮件存储在会话中。
最好在单独的文件中进行验证,然后将其重定向回每个错误的URL中包含基本变量的表单,即http://www.example.com/form?n=1
使用单独的文件还意味着将表单数据存储在会话中,因此如果重定向中存在错误,则可以重新填充表单。
感激不尽的任何帮助。
答案 0 :(得分:7)
我发现this article by Chris非常善于解释CSRF是什么以及如何保护自己免受其侵害。
答案 1 :(得分:2)
这些文章可能会对您有所帮助:
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
答案 2 :(得分:1)
根据经验,CodeIgntier做了很好的CSRF implementation,以及其他安全措施。我建议你仔细阅读他们的代码,以便对整个过程有一个很好的理解。另请参阅this。