Wie kann der 400-Fehler nach der Aktivierung von CSRF behoben werden? In diesem Artikel werden hauptsächlich relevante Informationen zum 400-Fehler vorgestellt, der beim Posten von Daten nach der Aktivierung von Csrf auftritt. Ich hoffe, es hilft allen.
Ich hatte in letzter Zeit einen solchen Fehler und habe nach der Ursache gesucht. Ich habe zufällig einen Artikel gesehen, der ihn gelöst hat, und ich möchte ihn gerne mit allen teilen.
Die erste Lösung besteht darin, Csrf zu deaktivieren
public function init(){ $this->enableCsrfValidation = false; }
Die zweite Lösung besteht darin, dem Formular ausgeblendete Felder hinzuzufügen
Die dritte Lösung besteht darin, das _csrf-Feld in AJAX hinzuzufügen
var csrfToken = $('meta[name="csrf-token"]').attr("content"); $.ajax({ type: 'POST', url: url, data: {_csrf:csrfToken}, success: success, dataType: dataType });
Yii diesen Matching-Prozess und Yii:: $app-> request->csrfToken Beschreibung des Speicherorts dieses Werts:
Speicherort
protected function createCsrfCookie($token) { $options = $this->csrfCookie; $options['name'] = $this->csrfParam; $options['value'] = $token; return new Cookie($options); }
Verifizierungsmethode
public function validateCsrfToken($token = null) { $method = $this->getMethod(); // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1 if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) { return true; } $trueToken = $this->loadCsrfToken(); if ($token !== null) { return $this->validateCsrfTokenInternal($token, $trueToken); } else { return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken) || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken); } }
Verwandte Empfehlungen:
Über Same-Origin-Richtlinie und CSRF Erklärung des Wissens Punkte der Sicherheitsrichtlinien
Detaillierte Einführung in XSS und CSRF
Yii2 0How to Verteidigung gegen CSRF-Angriffe
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem des 400-Fehlers nach der Aktivierung von CSRF. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!