Heim > Artikel > PHP-Framework > Formularfälschung und CSRF-Schutz von Laravel
Wir wissen, dass die derzeit beliebteste API-Designspezifikation das restFul API-Design ist. Restful verfügt über fünf gängige HTTP-Methoden: get, post, put, patch und delete. Es ist sehr einfach, die Get- oder Post-Methode mithilfe des HTML-Formulars zu erstellen, die anderen drei Methoden werden jedoch nicht unterstützt. Aber in Laravel können Sie die anderen drei oben genannten Methoden durch Formularfälschungstechnologie verwenden.
Empfohlenes Tutorial: „Laravel-Framework“
Vorbereitungsarbeiten
Zunächst müssen wir die Vorbereitungsarbeiten durchführen. Wir müssen zwei Routen erstellen: eine Formularroute und eine Route, die Formulare akzeptiert.
// 表单页 Route::get('form', function () { return view('form'); }); // 接受表单请求 Route::any('getform', function () { return \Illuminate\Support\Facades\Request::method(); });
Zu Beginn haben wir das einfachste Get-Anfrageformular erstellt. Der Inhalt lautet wie folgt:
<form method="get" action="/getform"> <input type="submit" value="sub" /> </form>
Nachdem Sie auf die Schaltfläche „Senden“ geklickt haben, erscheint „GET“ im Browser und zeigt an, dass die Get-Anfrage erfolgreich gesendet und akzeptiert wurde.
CSRF-Schutz
Dann wechseln wir zur Post-Methode, aktualisieren dann und klicken auf die Schaltfläche „Senden“, um zu sehen, was passiert. Sie werden einen Fehler mit „Seite abgelaufen“ und dem Statuscode 419 finden. Warum kann Laravel keine Post-Anfragen annehmen? Hier stellen wir den standardmäßigen CSRF-Schutzmechanismus von Laravel vor.
Laravel bietet CSRF-Token-Schutz, um Cross-Site-Request-Forgery-Angriffe zu verhindern. Daher müssen Sie für alle Methoden außer der Get-Methode-Anfrage das CSRF-Token wie folgt zum Formular hinzufügen:
<input type="hidden" name="_token" value="{{csrf_token()}}">
Es hat auch die Abkürzung The Die Methode lautet wie folgt:
@csrf
Schalten Sie die CSRF-Schutzfunktion aus
Es wird im Allgemeinen nicht empfohlen, die CSRF-Funktion der gesamten Site auszuschalten. Es ist sehr einfach, sie auszuschalten. Kommentieren Sie einfach das
\App\Http\Middleware\VerifyCsrfToken::class
Zeile in der Datei Kernel.php. Wir hoffen, dass alle externen API-Schnittstellen keinen CSRF-Schutz erfordern. Anschließend können Sie die CSRF-Whitelist-Funktion verwenden, um die Whitelist in der Datei app/Http/Middleware/VerifyCsrfToken.php festzulegen. Wie folgt:
class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ /* 这里是白名单列表 */ 'http://example.com/api/*', 'api/*', 'a/b/*' ]; }
Hinweis: Zur Vereinfachung des Testens wird die CSRF-Funktion beim Testen der Umgebung automatisch deaktiviert
Formularfälschung
Nachdem wir den CSRF-Schutzmechanismus kennengelernt haben, werfen wir einen Blick darauf wie man Formularfälschungen durchführt. Es ist sehr einfach, ein Formular zu fälschen. Fügen Sie einfach
<input type="hidden" name="_method" value="PUT">
hinzu oder kürzen Sie es zu @method('PUT')
ab. Das Folgende ist ein Formular zum Fälschen einer Put-Anfrage
Das obige ist der detaillierte Inhalt vonFormularfälschung und CSRF-Schutz von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!