小编典典

如何在AJAX中使用Zend Framework Form Hash(令牌)

ajax

我已经将Zend_Form_Element_Hash包含在一个表单multicheckbox表单中。我将jQuery设置为在单击复选框时触发AJAX请求,我将令牌与此AJAX请求一起传递。第一个AJAX请求效果很好,但随后的请求失败。

我怀疑可能是令牌通过验证之后才从会话中删除(跳= 1)。

使用Zend Framework Hash保护表单但使用AJAX完成其中一些请求的攻击计划是什么?


阅读 283

收藏
2020-07-26

共1个答案

小编典典

我最终放弃使用Zend_Form_Element_Hash,而是手动创建了一个令牌,并在Zend_Session中进行了注册,然后在提交时进行了检查。

form.php

$myNamespace = new Zend_Session_Namespace('authtoken');
$myNamespace->setExpirationSeconds(900);
$myNamespace->authtoken = $hash = md5(uniqid(rand(),1));
$auth = new Zend_Form_Element_Hidden('authtoken');
$auth->setValue($hash)
     ->setRequired('true')
     ->removeDecorator('HtmlTag')
     ->removeDecorator('Label');

controller.php

$mysession = new Zend_Session_Namespace('authtoken');
$hash = $mysession->authtoken;
if($hash == $data['authtoken']){
    print "success";
} else {
    print "you fail";
}

这似乎有效,并且仍然使事情相对理智和安全。我仍然希望使用Hash元素,但似乎无法使其与AJAX一起使用。

谢谢大家

2020-07-26