Php 如何在Yii2框架中处理CSRF验证?

Php 如何在Yii2框架中处理CSRF验证?,php,csrf,yii2,Php,Csrf,Yii2,我对yii2中的CSRF验证有问题。验证在gii生成的默认表单上运行良好,但是当我使用html标记编辑表单时,表单提交会抛出错误的请求错误。我已禁用csrf验证以隐藏错误,但我想使用它来确保应用程序和数据验证的安全性 有没有办法解决此错误,或者有没有办法将其配置为在这种情况下正常工作?我想,您的html表单没有隐藏的\u csrf字段,该字段由标准的Yii2小部件自动生成 因此,自定义表单的最低代码可能如下所示: <form method="post"> <input

我对yii2中的CSRF验证有问题。验证在gii生成的默认表单上运行良好,但是当我使用html标记编辑表单时,表单提交会抛出错误的请求错误。我已禁用csrf验证以隐藏错误,但我想使用它来确保应用程序和数据验证的安全性


有没有办法解决此错误,或者有没有办法将其配置为在这种情况下正常工作?

我想,您的html表单没有隐藏的
\u csrf
字段,该字段由标准的Yii2小部件自动生成

因此,自定义表单的最低代码可能如下所示:

<form method="post">
    <input type="hidden" name="<?= Yii::$app->request->csrfParam; ?>" value="<?= Yii::$app->request->csrfToken; ?>" />
    <button type="submit"> Save </button>
</form>

试试这个

<?=yii\helpers\Html::hiddenInput(Yii::$app->request->csrfParam, Yii::$app->request->csrfToken)?>


如果看不到代码,很难假设是什么导致了这个问题。请添加破坏CSRF验证的表单更改。标题请更新您的问题,而不是将其作为评论发布,我只使用自定义html元素更改了表单输入元素,并且我的表单元素包含由gii生成的带有名称的csrf值。我不知道发生了什么。我在我的Yii2表单中隐藏了_csrf参数,并将自动生成的令牌作为其值。但是无论如何,我的app.log充满了BadRequestHttpException条目,即使表单数据是正常存储的。我做错了什么?如何修复?