文档中写道,在表单中包含Zend_Form_Element_Hash元素就足够了,并且Zend_Form会自动处理CSRF保护。
我添加了这样的令牌:
$token = new Zend_Form_Element_Hash('security_token_against_csrf');
$token->setSalt($this->_helper->randomString());
$form->addElement($token);
但在提交任何带有此类令牌的表格后,我收到此错误:
The two given tokens do not match
我还需要在表单验证期间使用任何方法吗?
答案 0 :(得分:3)
您是否尝试过将盐设置为定义明确(或至少可重复)的字符串?
当Zend_Form验证时,它需要从会话数据重新创建哈希,然后与提交的内容进行比较,如果它正在应用不同的盐,则会导致令牌不匹配。