编程语言
首页 > 编程语言> > PHP-Zend Framework 2 CSRF保护

PHP-Zend Framework 2 CSRF保护

作者:互联网

目前,我尝试使用Zend Framework 2的CSRF保护.

但是每次发送表单时,都会出现以下错误消息:

The form submitted did not originate from the expected site

我以这种方式实现了CSRF保护:

1)创建一个Form类并添加csrf:

$this->add(array(
    'type' => 'Zend\Form\Element\Csrf',
    'name' => 'secret',
    'options' => array(
        'csrf_options' => array(
            'timeout' => 600
        )
    )
));

2)在视图文件中回显了csrf元素:

 echo $this->form()->openTag($forgotPasswordForm);
 echo $this->formRow($forgotPasswordForm->get('email'));
 echo $this->formRow($forgotPasswordForm->get('secret'));
 echo $this->formSubmit($forgotPasswordForm->get('submit'));
 echo $this->form()->closeTag($forgotPasswordForm);

我发现csrf令牌未存储在会话中,但是为什么呢?

解决方法:

我的控制器中有以下行:

$forgotPasswordForm = new ForgotPassword();
$forgotPasswordForm->prepare();

我将$forgotPasswordForm-> prepare()移到了视图文件,现在它可以工作了:-)

谢谢您的支持!

标签:csrf,zend-framework2,zend-framework,php
来源: https://codeday.me/bug/20191123/2067017.html