Zend_Form csrf验证ajax查询

时间:2011-08-15 06:39:50

标签: ajax zend-framework validation csrf

以下是我如何将csrf添加到表单

$this->addElement('hash', 'csrf', array('ignore' => false));

当发生这种情况时会创建会话,然后当用户发送ajax请求时,通过创建表单实例来验证请求中的值,并且表单始终对于自第一个ajax请求开始有效创建html输出的初始请求

当第二次发送ajax请求时会发生不同的事情,

该表单的实例具有与最初生成的csrf值不同的csrf值,并且当我的代码完成时,最初创建的会话也被销毁,因此没有会​​话来检查接收到的值,因此表单未经过验证,发生以下错误。

No token was provided to match against

哪个事件的哪些想法,表单的csrf值会自动存储在会话中?

2 个答案:

答案 0 :(得分:5)

哈希值在渲染时生成,并在每次请求后无效。

如果您想在表单可能多次提交的AJAX表单中继续使用Zend_Form_Element_Hash,那么您的AJAX响应应该包含新的哈希值。收到回复后,您应该更新表单数据。

答案 1 :(得分:0)

在视图中没有任何渲染的解决方案:Totaly ajax! How to use Zend Framework Form Hash (token) with AJAX