Laravel - Schutz vor CSRF

Hallo, aufstrebende Entwickler! Heute tauchen wir ein in die Welt des CSRF-Schutzes in Laravel. Keine Sorge, wenn Sie neu im Programmieren sind; ich werde Sie Schritt für Schritt durch führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Lassen Sie uns gemeinsam diese aufregende Reise antreten!

Laravel - CSRF Protection

Was ist CSRF?

Bevor wir uns der Implementierung in Laravel zuwenden, lassen Sie uns verstehen, was CSRF ist. CSRF steht für Cross-Site Request Forgery. Stellen Sie sich vor, Sie sitzen in einem Café, genießen Ihren Cappuccino und überprüfen Ihr Bankkonto auf Ihrem Laptop. Plötzlich tricks ein hinterhältiger Hacker in Ihrer Nähe Ihren Browser in eine Anfrage um, Geld von Ihrem Konto auf seins zu überweisen. Das ist CSRF in Aktion!

Warum ist der CSRF-Schutz wichtig?

CSRF-Angriffe können verheerend sein. Sie können zu nicht autorisierten Aktionen führen, die im Namen authentifizierter Benutzer durchgeführt werden. In unserem Café-Szenario könnten Sie Ihr hart verdientes Geld verlieren! Deshalb brauchen wir CSRF-Schutz, und Laravel hat uns im Rücken.

Laravel's Implementierung des CSRF-Schutzes

Laravel macht es unglaublich einfach, Ihre Anwendung vor CSRF-Angriffen zu schützen. Lassen Sie uns herausfinden, wie es funktioniert.

Das CSRF-Token

Im Herzen von Laravel's CSRF-Schutz steht ein einzigartiges Token. Stellen Sie sich dieses Token als geheime Handshake zwischen Ihrer Anwendung und dem Browser des Benutzers vor.

So fügen Sie dieses Token in Ihre Formulare ein:

<form method="POST" action="/profile">
@csrf
...
</form>

Die @csrf Direktive generiert ein verstecktes Eingabefeld mit dem CSRF-Token. Es ist wie das Geben eines geheimen Passworts für Ihr Formular!

CSRF-Überprüfungs-Middleware

Laravel verwendet Middleware, um das CSRF-Token für jede POST-, PUT-, PATCH- oder DELETE-Anfrage zu überprüfen. Es ist wie ein Security-Mann, der an der Eingangstür eines Clubs die Ausweise überprüft.

So sieht die Middleware im Hintergrund aus:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
/**
* Die URIs, die von der CSRF-Überprüfung ausgeschlossen werden sollten.
*
* @var array
*/
protected $except = [
//
];
}

Diese Middleware wird automatisch auf alle Web-Routen angewendet. Es ist wie ein unsichtbarer Schild, der Ihre Anwendung schützt!

Ausschließen von URLs vom CSRF-Schutz

Manchmal möchten Sie bestimmte URLs vom CSRF-Schutz ausschließen. Zum Beispiel, wenn Sie eine API erstellen, die von anderen Anwendungen verwendet wird. Sie können diese URLs aus dem $except Array im VerifyCsrfToken Middleware hinzufügen:

protected $except = [
'api/*',
'webhook/*',
];

Es ist wie das Geben eines VIP-Passes, um die Sicherheitskontrolle an der Eingangstür unseres Clubs zu umgehen.

X-CSRF-TOKEN

Für AJAX-Anfragen ermöglicht Laravel das Senden des CSRF-Tokens in einem benutzerdefinierten HTTP-Header namens X-CSRF-TOKEN. So richten Sie es ein:

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

Dann in Ihrem JavaScript (verwendet jQuery als Beispiel):

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

Das ist wie das Geben eines besonderen Abzeichens, das sagt: "Ich bin autorisiert!"

X-XSRF-TOKEN

Laravel setzt auch ein CSRF-Token in einem Cookie namens XSRF-TOKEN. Viele JavaScript-Frameworks, wie Angular, verwenden diesen Cookie automatisch.

Wenn Sie diese Frameworks nicht verwenden, können Sie das Token manuell senden:

var token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

Es ist wie das Geben einer geheimen Entschlüsselungsrunde, um Anfragen zu überprüfen!

CSRF-Schutzmethoden

Hier ist eine Tabelle, die die CSRF-Schutzmethoden zusammenfasst, die wir besprochen haben:

Methode Beschreibung
@csrf Direktive Generiert ein verstecktes Eingabefeld mit dem CSRF-Token
VerifyCsrfToken Middleware Überprüft automatisch das CSRF-Token für POST-, PUT-, PATCH- und DELETE-Anfragen
X-CSRF-TOKEN Header Ermöglicht das Senden des CSRF-Tokens in einem benutzerdefinierten HTTP-Header für AJAX-Anfragen
XSRF-TOKEN Cookie Setzt das CSRF-Token in einem Cookie für die Verwendung durch JavaScript-Frameworks

Schlussfolgerung

Und das war's, zukünftige Codewizards! Wir haben die Welt des CSRF-Schutzes in Laravel durchquert. Denken Sie daran, dass die Sicherung Ihrer Anwendung entscheidend ist, und Laravel macht es einfacher als je zuvor.

Wie ich meinen Schülern immer sage, denken Sie an CSRF-Schutz als Türsteher im coolsten Club der Stadt. Es stellt sicher, dass nur autorisierte Anfragen hereingelassen werden und Ihre Anwendung vor undisziplinierten Party-crashern schützt.

Weiter üben, bleiben Sie neugierig, und bevor Sie es wissen, werden Sie sichere Laravel-Anwendungen wie ein Profi erstellen! Viel Spaß beim Coden!

Credits: Image by storyset