我正在使用ZF的Zend_Form_Element_Hash
来保护我的表单免受CSRF
的攻击。
但问题是生成的令牌过早到期。我猜测问题在于会话生命周期,因为这是存储它的地方。
我使用此代码生成它:
$token = new Zend_Form_Element_Hash('tk');
$token->setSalt(md5(uniqid(mt_rand(), TRUE)));
有什么方法可以让令牌在更长的时间内有效?
我做得对还是有更好的方法?我是Zend Framework的新手。
答案 0 :(得分:5)
Zend_Form_Element_Hash中还有一个timeout
属性,用作CSRF令牌的TTL。默认情况下,它是300秒(5分钟)。
您可以通过传递timeout
的值作为选项来增加此超时。
$token = new Zend_Form_Element_Hash('tk', array('timeout' => 900)); // 15 minute TTL