wake-up-neo.com

Wie gehe ich mit der CSRF-Validierung in Yii2 Framework um?

Ich habe ein Problem mit der CSRF-Validierung in yii2. Die Validierung funktioniert gut mit dem von gii generierten Standardformular, aber wenn ich das Formular mit HTML-Tags bearbeite, wirft die Formularübergabe einen fehlerhaften Anforderungsfehler ab. Ich habe die csrf-Überprüfung deaktiviert, um den Fehler zu verbergen, aber ich möchte dies für die Sicherheit der Anwendung und die Datenüberprüfung verwenden.

Gibt es eine Möglichkeit, diesen Fehler zu beheben, oder gibt es eine Möglichkeit, ihn so zu konfigurieren, dass er in diesem Szenario korrekt funktioniert?

15
msucil

Ich schätze, Ihr HTML-Formular hat kein _csrf-Feld versteckt, das automatisch von Standard-Yii2-Widgets generiert wird. 

Der Mindestcode Ihres benutzerdefinierten Formulars könnte also so aussehen:

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

Versuche dies

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