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

2022-08-30 18:12:35

我在 yii2 中遇到 CSRF 验证问题。验证适用于 gii 生成的默认表单,但当我使用 html 标记编辑表单时,表单提交会引发错误的请求错误。我已经禁用了csrf验证来隐藏错误,但我想用它来确保应用程序和数据验证的安全性。

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


答案 1

我猜,你的html表单没有隐藏字段,这是由标准的Yii2小部件自动生成的。_csrf

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

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

答案 2

试试这个

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

推荐