CSRF令牌Zend框架和Webkit请求

时间:2012-05-03 08:33:10

标签: php zend-framework csrf

我为表单编写了CSRF保护并添加了一个隐藏的令牌。帖子发送到同一个动作。所以我的formAction代码如下所示:

if($this->getRequest()->isPost()) {
    $token = $this->_getParam('token');
    if(isset($this->session->token) && 
       isset($cellarToken) && 
       $token == $this->session->token) {
         ......process form.......
    }
    else {
       error_log('possible CSRF attack');
    }
}
else {
    $this->session->token =  md5(uniqid(mt_rand(),true));
    $this->view->token = $this->session->token;
}

在我的视图中我添加了:

<input type="hidden" value="<?= $this->token; ?>" name="token" />

这适用于所有主流浏览器,但确实在Chrome,Safari等Webkit浏览器中出现了一些问题。在这里,我在后台向我的联系人发出第二个GET请求,生成新令牌,因此表单无效....

有谁知道这第二个请求来自哪里?如果它是我自己的代码,那么在所有浏览器中都会有第二个请求......

此致

0 个答案:

没有答案