"."/> ".">

Heim  >  Artikel  >  PHP-Framework  >  Lösung für CSRF-Angriff in Laravel

Lösung für CSRF-Angriff in Laravel

WBOY
WBOYOriginal
2022-06-21 16:07:533504Durchsuche

Lösung: 1. Verwenden Sie Laravel, um für jede Benutzersitzung automatisch ein „CSRF-Token“ zu generieren. Dieses Token kann verwendet werden, um zu überprüfen, ob der angemeldete Benutzer und der Anforderer dieselbe Person sind. 2 . Geben Sie die globale Hilfefunktion „csrf_token“ an, um den Token-Code im Ansichtsübermittlungsformular zu erhalten. Die Syntax lautet „<...value php="">". .

Lösung für CSRF-Angriff in Laravel

Die Betriebsumgebung dieses Artikels: Windows 10-System, Laravel Version 9, Dell G3-Computer.

Lösung für CSRF-Angriffe in Laravel

CSRF ist die englische Abkürzung für Cross-Site Request Forgery;

Das Vermeiden von CSRF-Angriffen im Laravel-Framework ist sehr einfach:

1. Laravel stellt automatisch eine Lösung für jeden Benutzer bereit CSRF-Token, mit dem überprüft werden kann, ob der angemeldete Benutzer und der Anforderer dieselbe Person sind. Andernfalls schlägt die Anfrage fehl. (Das Prinzip ist das gleiche wie beim Bestätigungscode.)

2. Laravel bietet eine globale Hilfsfunktion csrf_token, um den Token-Wert zu erhalten, sodass Sie nur den folgenden HTML-Code zum Ansichtsübermittlungsformular hinzufügen müssen, um das Token einzufügen Anfrage:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

So vermeiden Sie CSRF-Angriffe in Laravel

Fall: Implementieren Sie die Überprüfung des CSRF-Mechanismus durch Fälle
1. Erstellen Sie zwei Routen, eine zum Anzeigen des Formulars (get) und die andere zum Verarbeiten von Anfragen (post)

Route::get('test6','Home\TestController@test6');Route::post('test7','Home\TestController@test7');

2. Erstellen Sie die Anforderungsmethode

	 public function test6(){
        return view('home.test.test6');
     }
     public function test7()
     {
         return "请求提交成功";
     }

3. Erstellen Sie das einfache Formular, das Sie benötigen. Senden Sie den Effekt (Fehlerseite). Fazit: Durch den Fall gerade wird gezeigt, dass die csrf Der Verifizierungsmechanismus in Laravel ist standardmäßig aktiviert.

5. Lösen Sie das Fehlerproblem (wie man die CSRF-Überprüfung besteht) Lösung für CSRF-Angriff in Laravel Lösung: Bringen Sie den für CSRF erforderlichen Token-Wert und übergeben Sie ihn mit der Anfrage an die nachfolgende Methode


    用户名:
         {{csrf_field()}}     

Vereinfachung der csrf_token-Methode: {

{csrf_field( )}}

Lösung für CSRF-Angriff in LaravelSpezifische Ausdrucksform:


Der Unterschied zwischen den beiden:

Csrf_token gibt nur den Wert des Tokens aus.

Csrf_field gibt ein gesamtes verstecktes Eingabefeld aus.

Wie man es bei späterer Verwendung auswählt: In den meisten Fällen In bestimmten Fällen können Sie die Situation selbst auswählen. Es gibt jedoch eine Situation, in der der Entwickler kein Wahlrecht hat und csrf_token verwenden muss. In diesem Fall wird die asynchrone Formularübermittlungsmethode verwendet.

Ausnahmerouten von der CSRF-Validierung ausschließenLösung für CSRF-Angriff in Laravel

Nicht alle Anfragen müssen CSRF-Angriffe vermeiden, wie etwa Anfragen an APIs von Drittanbietern, um Daten abzurufen.
Sie können die auszuschließende Anforderungs-URL zum Attributarray $exclusive in der VerifyCsrfToken-Middleware (app/Http/Middleware/VerifyCsrfToken.php) hinzufügen:

Legen Sie Ausnahmen fest, indem Sie die Konfiguration schreiben:

Schreiben eines einzelnen Routenausschlusses

 'home.test.test6',

Mehrere The Elemente werden durch "," getrennt und folgen der Array-Schreibmethode.
'home.test.test6','home.test.test7'
Wenn Sie alle Routen ausschließen und CSRF verwenden müssen, können Sie schreiben:

'*'

[Verwandte Empfehlungen:
Laravel-Video-Tutorial

]

Das obige ist der detaillierte Inhalt vonLösung für CSRF-Angriff in Laravel. 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