Heim  >  Artikel  >  Backend-Entwicklung  >  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

*文
*文Original
2017-12-27 11:43:242227Durchsuche

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

00b5d82ce34774ecc2f284f6ef3a9154request->csrfToken ?>">

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!

Stellungnahme:
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