【问题标题】:How to handle CSRF Validation in Yii2 Framework?如何在 Yii2 框架中处理 CSRF 验证?
【发布时间】:2015-04-12 22:37:08
【问题描述】:

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

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

【问题讨论】:

  • 没有看到代码很难假设是什么导致了这个问题。请添加破坏 CSRF 验证的表单更改。
  • 请更新您的问题,而不是发表评论,

标签: php csrf yii2


【解决方案1】:

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

所以你的自定义表单的最小代码可能是这样的:

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

【讨论】:

  • 我只使用自定义 html 元素更改了表单输入元素,并且我的表单元素包含由 gii 生成的带有名称的 csrf 值。我不知道发生了什么。
  • 我在 Yii2 表单中隐藏了 _csrf 参数,并自动生成了令牌作为其值。但无论如何,我的 app.log 中充满了 BadRequestHttpException 条目,即使表单数据存储正常。我做错了什么以及如何解决?
【解决方案2】:

试试这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多