gpt4 book ai didi

php - ZF2 表单的 CSRF 即使使用无效值也会进行验证

转载 作者:可可西里 更新时间:2023-11-01 01:00:54 24 4
gpt4 key购买 nike

我有几种使用 CSRF 输入的表单。例如,在我的表单的构造函数中,它看起来像这样:

    $this->add(array (
'name' => 'csrf',
'type' => 'Csrf',
'attributes' => array(
'id' => 'csrf'
)
));

只是为了好玩,我尝试使用 Firebug 更改 CSRF 输入的 token 值并提交表单,只是为了看看会发生什么。结果:它仍然有效。我什至转储了 $_POST 数据以确认正在提交无效 token 。更重要的是,我尝试将超时设置为 10 秒,同样的事情发生了:表单似乎忽略了 CSRF 输入并验证表单是否正常。代码如下:

    $this->add(array (
'name' => 'csrf',
'type' => 'Csrf',
'attributes' => array(
'id' => 'csrf'
),
'options' => array(
'csrf_options' => array(
'timeout' => 10
)
)
));

我什至尝试将 CSRF 元素的过滤器添加到表单的输入过滤器中,但同样,它仍然通过了它不应该的。

还有什么我应该在这里做但我没有做的吗?如果它实际上不会做任何事情,我不想将它添加到我的表单中。

编辑:这是一个link到我的表单和我的 Controller 操作的代码。请注意,虽然表单的方法 getInputFilter 有 csrf、sex 和 role 的验证器,但没有它们结果是一样的。

最佳答案

在略微阅读了文档之后,我不知何故偶然发现了一些让我思考的东西。所以我尝试将以下代码添加到 getInputFilter 方法中:

$inputFilter->add($factory->createInput(
array(
'name' => 'csrf',
'validators' => array (
array(
'name' => 'csrf'
)
)
)));

说我疯了,但这是否意味着 getInputFilter 方法会清除 csrf、select 和 radio 等元素上预先存在的验证器?

关于php - ZF2 表单的 CSRF 即使使用无效值也会进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com