目前我尝试使用 Zend Framework 2 的 CSRF 保护。
但是每次我发送表单时,都会收到以下错误消息:
提交的表单不是来自预期的站点
我以这种方式实现了 CSRF 保护:
1)创建了一个表单类并添加了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 令牌没有存储在会话中,但是为什么呢?