Zend Framework 2 CSRF验证

时间:2017-02-20 09:18:15

标签: php zend-framework2 csrf

我有基于Zend框架2的应用程序。我有一个带有CSRF字段的表单。如果我填写表单并在大约5分钟后提交,则会给出The form submitted did not originate from the expected site验证错误。

所以我认为它可能是会话配置的一些问题。然后,我在SessionConfig module.config.php上添加了选项'session' => array( 'remember_me_seconds' => 2419200, 'use_cookies' => true, 'cookie_httponly' => true, 'cookie_lifetime' => '2419200', 'gc_maxlifetime' => '2419200' ), 作为follows

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

但问题仍然存在。你知道如何解决这个问题吗?

- 更新 -

我的表单类包含CSRF元素,如下所示,

var query = {
      $or:[
            {"profile.public.f1": {$in: [null, false, '']}},
            {"profile.public.f2": {$in: [null, false, '']}},
            {"profile.public.f3": {$in: [null, false, '']}}
      ]
};

这些似乎都不起作用。

1 个答案:

答案 0 :(得分:1)

ZendFramework下的Csrf系统根据存储在timeout密钥下的Csrf元素配置中的参数配置会话持续时间,如以下示例所示:

$form->add([
    'type' => Element\Csrf::class,
    'name' => 'csrf',
    'options' => [
        'csrf_options' => [
            'timeout' => 600,
        ],
    ],
]);