Forudsætninger:
Før du starter denne tutorial, skal du sørge for, at Laravel er installeret og fungerer korrekt i systemet. Jeg har installeret følgende applikationer på systemet til at udføre denne tutorial.
- Apache / 2.4.41 (Ubuntu)
- PHP 7.4.3 (cli)
- mariadb Ver 15.1
- Laravel Framework 7.25.0
Sådan implementeres CSRF:
CSRF-beskyttelse kan implementeres i Laravel ved hjælp af en hvilken som helst HTML-formular med en skjult form for CSRF-token, og anmodningen fra brugeren valideres ved hjælp af CSRF VerifyCsrfToken middleware. Enhver af følgende muligheder kan bruges til at generere et CSRF-token.
EN. @csrf
Det er et klingedirektiv at generere et tokenfelt, der skal bruges til verifikation. Det genererer et skjult indtastningsfelt.
B. csrf_token ()
Denne funktion kan bruges i metatagget og det skjulte indtastningsfelt i HTML-formularen. Det genererer en tilfældig streng som et CSRF-token.
C. csrf_field ()
Denne funktion opretter et skjult felt til HTML-formularen, hvor det bruges og genererer CSRF-token.
Anvendelsen af ovenstående muligheder vises ved hjælp af HTML-formularer i næste afsnit af vejledningen.
Brug af @csrf:
Opret en Laravel-visningsfil med navnet csrf1.klinge.php med følgende HTML-kode hvor @csrf direktivet bruges til at generere CSRF-token.
csrf1.klinge.php
Laravel CSRF-beskyttelsesmetode-1
Tilføj følgende rute i web.php fil for at indlæse visningsfilen i browseren. Hvornår brugeren vil give csrf1 efter basis-URL'en søger den csrf1.klinge.php fil i udsigt mappe til Laravel-projektet.
Rute :: visning ('/ csrf1', 'csrf1');Start Apache-serveren, og kør følgende URL fra browseren for at indlæse visningen i browseren. Her, laravelpro er laravel-projektnavnet. Du kan også køre Laravel-udviklingsserveren ved hjælp af PHP artisan-kommandoen.
https: // localhost / laravelpro / public / csrf1
Hvis du inspicerer siden, får du output som nedenfor. Her genereres et skjult felt med værdien automatisk af @csrf direktiv.
Brug af csrf_token ():
Opret en Laravel-visningsfil med navnet csrf2.klinge.php med følgende HTML-kode, hvor csrf_token () funktion bruges til at generere CSRF token. Denne funktion bruges som værdien af værdien attribut for det skjulte felt, og den bruges med to krøllede parenteser.
csrf2.klinge.php
Laravel CSRF-beskyttelsesmetode-2
Tilføj følgende rute i internettet.php fil for at indlæse visningsfilen i browseren. Som den første metode, når brugeren vil give csrf2 efter base-URL'en søger den csrf2.klinge.php fil i udsigt mappe til Laravel-projektet.
Rute :: visning ('/ csrf2', 'csrf2');Kør følgende URL fra enhver browser som før for at indlæse den anden visningsfil.
https: // localhost / laravelpro / public / csrf2
Hvis du inspicerer siden, får du output som nedenfor. Her genereres værdien af det skjulte felt ved hjælp af csrf_token () fungere.
Brug af csrf_field ():
Opret en Laravel-visningsfil med navnet csrf3.klinge.php med følgende HTML-kode hvor csrf_field () funktion bruges til at generere CSRF token. Denne funktion fungerer som @csrf direktivet, og du behøver ikke tilføje et skjult felt i HTML-formularen. Det bruges også med to krøllede parenteser som csrf_token () fungere.
csrf3.klinge.php
Laravel CSRF-beskyttelsesmetode-3
Tilføj følgende rute i internettet.php fil for at indlæse visningsfilen i browseren. Som den første metode, når brugeren vil give csrf3 efter basis-URL'en søger den csrf3.klinge.php fil i udsigt mappe til Laravel-projektet.
Rute :: visning ('/ csrf3', 'csrf3');Kør følgende URL fra enhver browser som før for at indlæse den anden visningsfil.
https: // localhost / laravelpro / public / csrf3
Hvis du inspicerer siden, får du output som nedenfor. Her genereres værdien af det skjulte felt ved hjælp af csrf_field () fungere.
Alle tre metoder til generering af CSRF-token vist ovenfor genererer den samme tokenværdi for den samme browser. Når angriberen sender en anmodning om at få adgang til indholdet af enhver godkendt bruger, der er online da BekræftCsrfToken middleware matcher anmodningstokenet og det lagrede sessionstoken for at validere anmodningen inden håndtering. På denne måde kan CSRF-angrebet let forhindres i Laravel. Denne beskyttelse kan deaktiveres fra Laravel ved at fjerne indgangen til App \ Http \ Middleware \ VerifyCsrfToken af $ mellemvare array fra filen app / http / kerne.php.
Konklusion:
Uautoriseret adgang kan have stor indflydelse på enhver applikation og beskadige dataene på den korrekt. Så CSRF-beskyttelse er meget vigtigt for at sikre enhver applikation, hvor de forskellige typer af tværnationale opgaver udføres. Denne tutorial hjælper Laravel-udviklerne med at kende måderne til at sikre deres applikation ved hjælp af CSRF-beskyttelse.