2011-08-15 60 views
3

這裏是我的CSRF添加到形式Zend_Form的跨站請求僞造驗證查詢

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

當這種情況發生在會話被創建,然後,當用戶發送一個AJAX請求,這些值在請求通過創建表單實例進行驗證,並且表單始終對自創建html輸出的初始請求開始以來的第一個ajax請求有效,

當第二次發送ajax請求時有所不同發生,

該窗體的實例與最初創建的實例不同,並且當我的代碼完成時,最初創建的會話也被銷燬,所以沒有會話檢查接收到的值,因此該表單未驗證併發生以下錯誤。

No token was provided to match against

任何想法,在這情況下,表單的CSRF值將自動保存在會話?

+2

您的標題與該問題不符,請考慮編輯它 – Phil

+0

感謝您的提醒 – Yasser1984

回答

4

哈希值在呈現時生成,並在每個請求之後失效。

如果你想繼續在你的AJAX表單中使用Zend_Form_Element_Hash,表單可能會多次提交,你的AJAX響應應該包含新的hash值。收到答覆後,您應更新表格數據。

相關問題