web-dev-qa-db-ja.com

Yii2フレームワークでCSRF検証を処理する方法

Yii2のCSRF検証に問題があります。検証はgiiによって生成されたデフォルトのフォームで正常に機能しますが、htmlタグを使用してフォームを編集すると、フォームの送信によって不正なリクエストエラーがスローされます。エラーを隠すためにcsrf検証を無効にしましたが、アプリケーションとデータ検証のセキュリティのためにこれを使用したいと思います。

このエラーを解決する方法はありますか、またはこのシナリオで正しく機能するように構成する方法はありますか?

19
msucil

たぶん、あなたの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>
38
Pavel Bariev

これを試して

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