Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 表单中的安全令牌_Forms_Security_Token - Fatal编程技术网

Forms 表单中的安全令牌

Forms 表单中的安全令牌,forms,security,token,Forms,Security,Token,许多消息来源建议在表单中添加令牌,以使表单提交更加安全 我在论坛的所有表单中添加了令牌,现在我遇到了以下问题: 一些用户使用不同的论坛线程打开多个浏览器选项卡。回复表单位于每个线程下方。因此,如果用户使用一个线程打开一个浏览器选项卡,然后使用另一个线程打开另一个选项卡,那么第一个表单中的令牌将不再有效,如果用户尝试提交第一个表单,则将出现错误。这种情况的解决方案是验证码,但我不想让我的用户把一切都弄得如此复杂 您能否建议其他方法来增加表单的安全性 谢谢。为什么在打开新选项卡时令牌无效?只要令牌是

许多消息来源建议在表单中添加令牌,以使表单提交更加安全

我在论坛的所有表单中添加了令牌,现在我遇到了以下问题:

一些用户使用不同的论坛线程打开多个浏览器选项卡。回复表单位于每个线程下方。因此,如果用户使用一个线程打开一个浏览器选项卡,然后使用另一个线程打开另一个选项卡,那么第一个表单中的令牌将不再有效,如果用户尝试提交第一个表单,则将出现错误。这种情况的解决方案是验证码,但我不想让我的用户把一切都弄得如此复杂

您能否建议其他方法来增加表单的安全性


谢谢。

为什么在打开新选项卡时令牌无效?只要令牌是由会话或登录用户已知的某个秘密生成的,就不需要在打开新线程时使其无效

有一种方法可以做到这一点:

  • 当用户登录时,创建一个仅存储在会话中的秘密
  • 在讨论线程的表单中,创建一个由会话机密、讨论中的论坛线程和任何其他在这种情况下可能发现有价值的信息组成的散列
  • 当用户提交表单时,根据上面相同的信息创建一个散列,并查看它是否匹配表单中提交的内容

  • 除了保持会话安全的正常措施(超时、登录时重置等)外,这将使您的表单相当安全,不会给用户带来任何不便。

    您使用此令牌的目的是什么?你打算用什么使它更安全?CSRF?重放攻击?