Schützen Sie Ihre Anwendung mit CSRF in Lithe

Barbara Streisand
Freigeben: 2024-11-11 01:36:03
Original
810 Leute haben es durchsucht

Protecting Your Application with CSRF in Lithe

In diesem Tutorial erfahren Sie, wie Sie den CSRF-Schutz (Cross-Site Request Forgery) in Lithe implementieren, um zu verhindern, dass unerwünschte Anfragen an Ihre Anwendung gestellt werden. Diese Anleitung richtet sich an Anfänger, daher gehen wir Schritt für Schritt vor!


Was ist CSRF?

CSRF oder Cross-Site Request Forgery ist eine Angriffsart, bei der ein Benutzer dazu verleitet wird, eine nicht autorisierte Aktion auf einer Website auszuführen, auf der er authentifiziert ist. Dieser Angriff ist gefährlich, da der Angreifer Daten manipulieren oder auf gesperrte Bereiche zugreifen kann. Um dies zu verhindern, fügen wir eine Sicherheitsebene hinzu, die die Verarbeitung verdächtiger Anfragen verhindert.


Aufbau des Tutorials

  1. Lithe einrichten
  2. CSRF-Middleware installieren
  3. CSRF-Token im Backend hinzufügen
  4. Überprüfen Sie das Token im Backend
  5. Senden Sie den Token vom Frontend
  6. CSRF-Schutz testen

Lasst uns anfangen!


Schritt 1: Lithe einrichten

Wenn Sie Lithe noch nicht eingerichtet haben, beginnen Sie mit der Installation des Frameworks mit dem folgenden Befehl:

composer create-project lithephp/lithephp project-name
cd project-name
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch entsteht eine Grundstruktur für Ihr Projekt mit Lithe.


Schritt 2: CSRF-Middleware installieren

Die CSRF-Middleware hilft bei der Generierung und Validierung von CSRF-Tokens. Um es zu installieren, führen Sie im Terminal Ihres Projekts den folgenden Befehl aus:

composer require lithemod/csrf
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 3: CSRF-Middleware konfigurieren

Jetzt müssen wir Lithe mitteilen, dass wir die CSRF-Middleware verwenden möchten. Öffnen Sie die Hauptdatei src/App.php und fügen Sie die CSRF-Middleware hinzu.

use Lithe\Middleware\Security\csrf;
use function Lithe\Orbis\Http\Router\router;

$app = new \Lithe\App;

// Configure the CSRF middleware with automatic checking in the request body
$app->use(csrf([
    'expire' => 600, // Token expiration after 10 minutes
    'checkBody' => true, // Enables automatic checking in the body
    'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Defines the methods for checking CSRF in the body
]));

$app->use(router(__DIR__ . '/routes/web'));

$app->listen();
Nach dem Login kopieren

Damit ist die CSRF-Middleware in unserer Anwendung aktiv und jede schutzbedürftige Anfrage muss ein gültiges Token enthalten.


Schritt 4: Generieren des CSRF-Tokens

Um den CSRF-Schutz zu nutzen, müssen wir ein eindeutiges Token generieren und es in die Anfragen aufnehmen. Wir erstellen eine Route zum Senden eines Formulars, das automatisch das CSRF-Token enthält.

  1. Erstellen Sie eine Datei mit dem Namen src/routes/web.php und fügen Sie die Formularroute mit einem Feld für das CSRF-Token hinzu.
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\get;

get('/form', function (Request $req, Response $res) {
    // Generate the CSRF token field
    $tokenField = $req->csrf->getTokenField();

    // Send the HTML with the token included in the form
    return $res->send("
        <form method='POST' action='/submit'>
            $tokenField
            <input type='text' name='data' placeholder='Type something' required>
            <button type='submit'>Submit</button>
        </form>
    ");
});
Nach dem Login kopieren
  1. Diese Route erstellt ein Formular, das das CSRF-Token-Feld enthält. Das Feld ist Pflichtfeld, damit Lithe die Echtheit der Anfrage überprüfen kann.

Schritt 5: Überprüfen des Tokens im Backend

Beim Absenden des Formulars prüft Lithe automatisch, ob der Token gültig ist. Erstellen wir nun die Route, die das Formular empfängt und verarbeitet.

  1. Fügen Sie in derselben Datei src/routes/web.php die Route zur Verarbeitung der Formularübermittlung hinzu.
composer create-project lithephp/lithephp project-name
cd project-name
Nach dem Login kopieren
Nach dem Login kopieren

Wenn das Token ungültig ist oder fehlt, blockiert Lithe automatisch die Anfrage und gibt einen Fehler zurück.


Schritt 6: Senden von Anfragen mit dem CSRF-Token

Wenn Sie im Frontend eine POST-Anfrage (oder eine andere datenverändernde Methode) senden müssen, ist es wichtig, das CSRF-Token in den Hauptteil der Anfrage oder in den Header aufzunehmen, je nachdem, wie Sie Ihre Middleware konfiguriert haben.

Beispiel mit der JavaScript-Abruf-API

Für diejenigen, die JavaScript verwenden, ist hier ein Beispiel, wie das Token mit einer Abrufanforderung gesendet wird:

composer require lithemod/csrf
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 7: Testen des CSRF-Schutzes

  1. Greifen Sie in Ihrem Browser auf die /form-Route zu. Sie sehen das Formular mit dem enthaltenen CSRF-Token.
  2. Füllen Sie das Feld aus und senden Sie das Formular ab.
  3. Wenn alles funktioniert, sehen Sie eine Erfolgsmeldung mit den gesendeten Daten.

Zusammenfassung und abschließende Überlegungen

In diesem Tutorial haben wir Folgendes gelernt:

  • Was CSRF ist und warum es wichtig ist.
  • So richten Sie eine CSRF-Middleware in Lithe ein.
  • So generieren und überprüfen Sie CSRF-Tokens im Backend.
  • So senden Sie CSRF-Tokens mit Formularen und AJAX-Anfragen.

Mit der Implementierung dieses Schutzes machen Sie Ihre Anwendung sicherer gegen CSRF-Angriffe und tragen so zum Schutz der Integrität der Daten Ihrer Benutzer bei.

Ausführlichere Informationen finden Sie in der offiziellen Lithe-Dokumentation.

Das obige ist der detaillierte Inhalt vonSchützen Sie Ihre Anwendung mit CSRF in Lithe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage