Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Php 为什么CSRF令牌需要超时?(ZF2)_Php_Zend Framework2_Csrf - Fatal编程技术网

Php 为什么CSRF令牌需要超时?(ZF2)

Php 为什么CSRF令牌需要超时?(ZF2),php,zend-framework2,csrf,Php,Zend Framework2,Csrf,这主要是一个一般性问题,但我专门针对ZF2。我想确切地了解CSRF令牌是如何工作的,以及什么决定了我应该在其上使用多长时间的TTL(超时) 我知道它为呈现的每个表单生成一个唯一的散列,并在提交表单时检查该散列,但它是根据什么进行检查的,它是否也在服务器端保留散列的副本?是一次性的吗?我猜不会,因为我可以多次重新提交同一表单(即,点击表单帖子结果页面上的刷新)。但是,它必须是特定于该表单和我当前的会话,对吗 为什么需要暂停?目前,我经常有页面在5分钟后提交或重新提交表单(默认的ZF2 CSRF超时

这主要是一个一般性问题,但我专门针对ZF2。我想确切地了解CSRF令牌是如何工作的,以及什么决定了我应该在其上使用多长时间的TTL(超时)

我知道它为呈现的每个表单生成一个唯一的散列,并在提交表单时检查该散列,但它是根据什么进行检查的,它是否也在服务器端保留散列的副本?是一次性的吗?我猜不会,因为我可以多次重新提交同一表单(即,点击表单帖子结果页面上的刷新)。但是,它必须是特定于该表单和我当前的会话,对吗

为什么需要暂停?目前,我经常有页面在5分钟后提交或重新提交表单(默认的ZF2 CSRF超时),并收到CSRF错误消息。这对合法的用户交互来说是个麻烦。我应该增加或删除超时吗?安全权衡是什么


我希望通过更好地了解ZF2的CSRF系统的机理,我能更好地了解此类决策。另外,您建议的CSRF配置选项是什么?

您可能会发现这很有用:它是一种安全功能,可防止劫持过时的CSRF令牌;确保给定令牌只能在该时间段内进行验证。我建议增加超时时间,而不是将其删除。备忘单已移动: