Heim  >  Artikel  >  PHP-Framework  >  Laravel CSRF entfernen

Laravel CSRF entfernen

WBOY
WBOYOriginal
2023-05-29 09:57:07996Durchsuche

Laravel ist ein beliebtes PHP-Framework, das bei professionellen Entwicklern und Anfängern gleichermaßen beliebt ist. Das Laravel-Framework implementiert CSRF-Schutz, um Cross-Site-Request-Forgery-Angriffe zu verhindern. In manchen Fällen ist es jedoch manchmal notwendig, den CSRF-Schutz zu entfernen. Dieser Artikel zeigt Ihnen, wie Sie den CSRF-Schutz in Laravel entfernen.

  1. Was ist CSRF-Schutz? Der Angreifer nutzt die Identität des Opfers im angemeldeten Zustand, um Anfragen für böswillige Operationen zu fälschen. Um diese Art von Angriffen zu verhindern, implementiert Laravel die CSRF-Schutzfunktion, die Webanwendungen gut schützen kann.

Die Implementierung des CSRF-Schutzes in Laravel

  1. Die Implementierung des CSRF-Schutzes in Laravel umfasst hauptsächlich die folgenden drei Schritte:
  2. # 🎜 🎜#2.1. CSRF-Token generieren

Fügen Sie die Anweisung csrf_field im HTML-Formular hinzu. Diese Anweisung generiert automatisch das CSRF-Token und fügt es dem ausgeblendeten Feld des Formulars hinzu.

<form>
@csrf
<input type="text" name="name">
<input type="submit" value="Submit">
</form>

2.2. CSRF-Token überprüfen

Im Backend überprüft Laravel, ob das angeforderte CSRF-Token legal ist. Wenn es unzulässig ist, wird eine Fehlermeldung zurückgegeben. In Laravel 5.6 und späteren Versionen wird standardmäßig CSRF-Schutz-Middleware hinzugefügt und alle Post-Anfragen werden einer CSRF-Überprüfung unterzogen. Wenn Ihre Anfrage das CSRF-Token nicht korrekt trägt, erhalten Sie die folgende Fehlermeldung:

TokenMismatchException in VerifyCsrfToken.php line 68:

2.3 Cross-Site-Scripting-Angriffsschutz

Um Cross-Site-Scripting-Angriffe zu verhindern. Bei Site-Scripting-Angriffen sollten Sie dem Prinzip der „Escape-Ausgabe“ folgen und die vom Benutzer bereitgestellten Daten nicht direkt ausgeben, sondern diese vor der Ausgabe verarbeiten. Verwenden Sie beispielsweise die Funktionen htmlentities oder htmlspecialchars, um HTML-Sonderzeichen zu maskieren.

Oben erfahren Sie, wie Sie den CSRF-Schutz in Laravel implementieren. Im Folgenden erklären wir Ihnen, wie Sie diesen Schutz entfernen.

So entfernen Sie den CSRF-Schutz in Laravel

    Wenn Ihre Webanwendung keinen CSRF-Schutz benötigt, können Sie ihn auch aus dem Laravel CSRF-Schutz entfernen In . Im Folgenden stellen wir zwei Methoden zum Entfernen des CSRF-Schutzes vor.
  1. 3.1. Deaktivieren Sie die CSRF-Schutz-Middleware.

Standardmäßig werden alle Laravel-Post-Anfragen einer CSRF-Überprüfung unterzogen. Wenn Sie diese Überprüfung entfernen möchten, können Sie die CSRF-Schutz-Middleware aus der Middleware entfernen. Die spezifische Methode lautet wie folgt:

Öffnen Sie die Datei app/Http/Kernel.php, suchen Sie die Web-Middleware-Gruppe im Array $middlewareGroups und löschen Sie die Middleware ['IlluminateFoundationHttpMiddlewareVerifyCsrfToken'] aus dem Array. .

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        // IlluminateRoutingMiddlewareSubstituteBindings::class,
        // IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];

Zu diesem Zeitpunkt werden alle Post-Anfragen keiner CSRF-Schutzüberprüfung unterzogen. Obwohl der CSRF-Schutz entfernt werden kann, stellt dies auch ein gewisses Sicherheitsrisiko dar. Daher wird empfohlen, es nur in strengen Testumgebungen zu aktivieren.

3.2. CSRF-Schutz manuell ignorieren

Wenn Sie die CSRF-Schutz-Middleware global deaktivieren, können Sie die CSRF-Schutzüberprüfung in einer bestimmten Route oder einem bestimmten Controller manuell ignorieren. Die spezifische Methode lautet wie folgt:

Verwenden Sie in der Routen- oder Controller-Methode, die freigegeben werden muss, die Methode withoutMiddleware:

Route::post('route', function () {
    //
})->withoutMiddleware([IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class]);

Diese Methode kann in einigen Sonderfällen verwendet werden Dies ist jedoch nicht der Fall. Es wird empfohlen, diese Methode für alle Routen zu verwenden.

Zusammenfassend lässt sich sagen, dass die Implementierung des CSRF-Schutzes in Laravel eine gute Sicherheitsmaßnahme ist. Es wird nicht empfohlen, den CSRF-Schutz zu entfernen, wenn er nicht erforderlich ist. Bei Bedarf können Sie den CSRF-Schutz mit den oben genannten Methoden entfernen. Bitte verwenden Sie es in der tatsächlichen Projektentwicklung natürlich entsprechend der tatsächlichen Situation mit Vorsicht.

Das obige ist der detaillierte Inhalt vonLaravel CSRF entfernen. 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