更改表单哈希(令牌)到期Zend Framework

时间:2012-02-08 17:47:16

标签: session zend-framework hash csrf

我正在使用ZF的Zend_Form_Element_Hash来保护我的表单免受CSRF的攻击。 但问题是生成的令牌过早到期。我猜测问题在于会话生命周期,因为这是存储它的地方。

我使用此代码生成它:

$token = new Zend_Form_Element_Hash('tk');
$token->setSalt(md5(uniqid(mt_rand(), TRUE)));

有什么方法可以让令牌在更长的时间内有效?

我做得对还是有更好的方法?我是Zend Framework的新手。

1 个答案:

答案 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

Zend_Form_Element_Hash API Doc