Zend 框架 1.12 - 哈希表单验证返回错误


Zend framework 1.12 - Hash Form Validation returns error

我正在使用Zend_Form_Element_Hash来保护我网站上的csrf。下面是我的表单中的代码.php

$token = new Zend_Form_Element_Hash('token', 'csrf');
$token->setSalt(md5(uniqid(rand(), TRUE)));
$token->initCsrfToken();
$token->initCsrfValidator();
$this->addElement($token);

当我在控制器中检查$form->有效时,我总是收到以下错误

The two given tokens do not match

将不胜感激这里的任何帮助!

  1. Csrf 存储在会话中,csrf 的会话名称取决于盐。如果盐是随机的,会话名称也是随机的。所以你无法得到会话中的CSRF将其与发布后的CSRF进行比较。做盐此形式的常量。

  2. 不要调用initCsrfToken,此方法重置csrf并称为在渲染时自动。

  3. 在元素创建时更好地传递盐

    $token = new Zend_Form_Element_Hash('token', 'csrf', array('salt' => 'secure'));
    $this->addElement($token);