Heim > Backend-Entwicklung > PHP-Tutorial > Lösen Sie das Problem des 400-Fehlers nach der Aktivierung von CSRF

Lösen Sie das Problem des 400-Fehlers nach der Aktivierung von CSRF

*文
Freigeben: 2023-03-18 16:02:01
Original
2259 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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
});
Nach dem Login kopieren

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);
  }
Nach dem Login kopieren

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);
    }
  }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage