Benutzer-Werkzeuge

Webseiten-Werkzeuge


laravel:csrf

CSRF-Token (Cross-Site-Request-Forgery)

Ein CSRF-Token verhindert, dass Post-Requests von einer anderen Anwendung aus (evtl. von Hackern) aufgerufen werden. Mit diesem Token wird sichergestellt, dass z. B. eine Aktualisierung von Daten aus externen Quellen ohne diesen Token nicht möglich ist.

In Laravel ist dieser Mechanismus Standardmäßig immer aktiviert. Daher muss bei jedem Formular, was abgesendet wird, der Token mit übertragen werden.


Beispiel für ein CSRF-Token von einem Blade-Template:

<form name="Formular" id="Formular" method="post">
      @csrf
</form>

Beispiel für ein CSRF-Token in einem Ajax-Aufruf:

Als erstes wird der CSRF-Token als Meta-Daten in den Header des blade-Templates mit aufgenommen:

<meta name="csrf-token" content="{{ csrf_token() }}">

Als nächstes kann der Content vom Meta-Eintrag in JavaScript verwendet werden:

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

CSRF-Token für einzelne Routen deaktivieren

Wenn eine Post-Anfrage von außen erwartet wird, die keinen CSRF-Token mitliefern kann, ist es möglich für einzelne Routen die Validierung durch den Token zu deaktivieren.

Hierfür müssen einfach diese Routen in der bereits vorhandene Variable $except in der Datei „VerifyCsrfToken.php“ aufgenommen werden. Beispiel:

    protected $except = [
        '/api/inbound'
    ];

Weitergehende Informationen: Wikipedia

laravel/csrf.txt · Zuletzt geändert: 2020/05/18 15:25 von webproducer