这主要是一般性问题,但我特意与ZF2合作。我想确切了解CSRF令牌的工作原理以及确定TTL(超时)应该对其持续多长时间。
据我所知,它为每个呈现的表单生成一个唯一的哈希值,并在提交表单时检查该哈希值,但它检查的是什么,它是否在服务器端保留哈希的副本?它是单独使用的吗?我没有猜测,因为我可以多次重新提交相同的表单(即在表单帖子的页面上点击刷新)。但是,它必须特定于那个表格和我当前的会话,对吗?
为什么需要超时?目前,我经常有一些页面,我在5分钟后提交或重新提交表单(默认的ZF2 CSRF超时),我收到CSRF错误消息。这是合法用户交互的烦恼。我应该增加还是删除超时?什么是安全交易?
我希望通过更好地了解ZF2的CSRF系统的机制,我会更好地了解这样的决定。另外,您推荐的CSRF配置选项是什么?