Artikelen

Laravel Web Sécherheet: Wat ass Cross-Site Request Forgery (CSRF)?

An dësem Laravel Tutorial schwätze mir iwwer Web Sécherheet a wéi Dir eng Webapplikatioun vu Cross-Site Request Forgery oder CSRF Attacken schützt.

CSRF ass eng béiswëlleg Aktivitéit vun engem Ugräifer, deen Aktiounen am Numm vun engem authentifizéierte Benotzer ausféiert, schiedlech fir d'Websécherheet. Glécklecherweis bitt Laravel d'Tools fir dës Zort vu Schwachstelle ze vermeiden.

Wat ass CSRF?

CSRF Attacken hijack Benotzersessiounen. Si maachen dëst andeems se e Benotzer trickéieren fir eng Ufro iwwer verstoppte Form Tags oder béiswëlleg URLen (Biller oder Linken) ouni d'Wëssen vum Benotzer ofzeginn.

Dës Attack féiert zu enger Verännerung vum Benotzersessionszoustand, Datenleckungen, an heiansdo kënnen Hacker Endverbraucherdaten an enger Applikatioun manipuléieren.

D'Bild hei uewen illustréiert e Szenario wou d'Websécherheet verletzt gëtt. D'Affer schéckt eng Ufro andeems Dir op e Link klickt (empfaangen), schéckt eng Ufro un e Websäitserver, deen Effekter produzéiert, déi vum Hacker gewënscht ginn, deen an d'Besëtzer vun der Informatioun kënnt, déi nëtzlech ass fir Zougang zum Websäitserver ze kréien an ze manipuléieren.

Wéi CSRF Demanden ze verhënneren

Ze verbesseren der Sécherheet Web vun Ären Uwendungen, an all Benotzersitzung generéiert Laravel sécher Tokens déi se benotzt fir sécherzestellen datt den authentifizéierte Benotzer deen ass deen d'Applikatioun freet.

Well dësen Token ännert all Kéier wann eng Benotzersession regeneréiert gëtt, kann en Ugräifer net zougräifen.

Wann et eng Ufro ass fir Benotzerinformatioun op Server Säit (Backend) z'änneren wéi POSTPUTPATCHDELETE, Dir musst d'Direktiv enthalen @csrf an der Ufro Form blade HTML. Déi @csrf et ass also eng Direktiv Blade benotzt fir e verstoppt Token ze generéieren deen vun der Applikatioun validéiert ass.

D'Direktiv Blade ass d'Syntax déi am Laravel Templatemotor benotzt gëtt genannt viischt . Fir eng Datei ze kreéieren blade Dir musst et en Numm ginn - an eisem Fall Form - gefollegt vun der Verlängerung vun der viischt. Dëst bedeit datt de Fichier den Numm wäert hunn form.blade.php.

De Fichier gëtt benotzt blade fir Usiichten op der Websäit ze maachen.Et ginn e puer Pre-DirektivendefiNite oder Blade Shorthand Syntax déi Dir benotze kënnt. Zum Beispill, @if kontrolléieren ob eng Konditioun zefridden ass, @empty kontrolléiert ob d'Records net eidel sinn, @auth kontrolléieren ob e Benotzer authentifizéiert ass a sou weider.

Mä loosst eis zréck op d'Direktiv @csrf. Hei ass wéi Dir et benotzt:

<form method="POST" action="{{route('pay')}}">

    @csrf
    
</form>

Virdrun Versioune vu Laravel haten en anere Setup: si béid funktionnéieren a maachen déiselwecht Saach.

Innovatioun Newsletter
Verpasst net déi wichtegst Neiegkeeten iwwer Innovatioun. Registréiert Iech fir se per E-Mail ze kréien.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

Wann de CSRF Token fehlt vun der Formufro, déi ofgeleet gëtt oder wann et ongëlteg schéngt, werft Laravel eng "Page Expired" Fehlermeldung mat engem 419 Statuscode.

Wéi a wou d'CSRF Verifizéierung stattfënnt

D'Mëttelware VerifyCsrfToken geréiert CSRF Verifikatioun bannent der Laravel Applikatioun. Déi middleware ass registréiert an Kernel.php a läit am Verzeechnes app/Http/Middleware. Dat heescht, datt de middleware et gëtt fir Ufroen am Internet ausgeléist, net mat den APIen verbonnen.

protected $middlewareGroups = [
        'web' => [
           .
           .
           .
           .
           .
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
    ];

D'VerifyCsrfToken Middleware erweidert d'Klass Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, dh CSRF Verifizéierung ass defiNuecht an der Klass.

Loosst eis méi déif graven fir erauszefannen wéi Laravel CSRF Verifizéierung handhabt.

Bannen an der Klass hu mir d'Funktioun tokensMatch.

protected function tokensMatch($request)
{
     $token = $this->getTokenFromRequest($request);

     return is_string($request->session()->token()) &&
            is_string($token) &&
            hash_equals($request->session()->token(), $token);
}

am Code bestëmmt ob d'Sessioun an den Input CSRF Token passen.

D'Funktioun mécht zwou Saachen:

  1. kréien $this->getTokenFromRequest den Token vun der erakommen Ufro befestegt iwwer e verstoppt Feld oder den Ufro Header. Den Token gëtt entschlësselt an dann zréck an d'Token Variabel.
protected function getTokenFromRequest($request)
{
    $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

    if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
        try {
            $token = CookieValuePrefix::remove($this->encrypter->decrypt($header, static::serialized()));
        } catch (DecryptException $e) {
            $token = '';
            }
    }

    return $token;
}

Am Code gëtt et Token vum Header

2. Gitt souwuel den Ufro Token wéi och d'Sessioun op eng String a benotzt dann hash_equals a PHP gebaut fir ze vergläichen wa béid Saiten gläich sinn. D'Resultat vun dëser Operatioun ass ëmmer bool (richteg) oder (falsch) .

Ercole Palmeri

Innovatioun Newsletter
Verpasst net déi wichtegst Neiegkeeten iwwer Innovatioun. Registréiert Iech fir se per E-Mail ze kréien.

Recent Artikelen

Dem Google seng nei kënschtlech Intelligenz kann DNA, RNA an "all d'Moleküle vum Liewen" modelléieren

Google DeepMind stellt eng verbessert Versioun vu sengem kënschtlechen Intelligenz Modell vir. Den neie verbesserte Modell bitt net nëmmen ...

9 Mee 2024

Entdeckt Laravel's Modular Architektur

Laravel, berühmt fir seng elegant Syntax a mächteg Features, bitt och e zolitte Fundament fir modulär Architektur. Do…

9 Mee 2024

Cisco Hypershield an Acquisitioun vun Splunk Déi nei Ära vun Sécherheet fänkt

Cisco a Splunk hëllefen Clienten hir Rees an de Security Operations Center (SOC) vun der Zukunft ze beschleunegen mat ...

8 Mee 2024

Iwwert der wirtschaftlecher Säit: déi onsichtbar Käschte vun der Ransomware

Ransomware huet d'Noriichte fir déi lescht zwee Joer dominéiert. Déi meescht Leit si sech gutt bewosst datt Attacke ...

6 Mee 2024

Innovativ Interventioun an Augmented Reality, mat engem Apple Betrachter an der Catania Polyclinic

Eng Ophthalmoplastikoperatioun mam Apple Vision Pro kommerziellen Betrachter gouf an der Catania Polyclinic duerchgefouert ...

3 Mee 2024

D'Virdeeler vu Faarwen Säiten fir Kanner - eng Welt vu Magie fir all Alter

D'Entwécklung vu Feinmotorik duerch Faarwen bereet d'Kanner op méi komplex Fäegkeeten wéi Schreiwen vir. Fir ze faarwen ...

2 Mee 2024

D'Zukunft ass hei: Wéi d'Schëfferindustrie d'Weltwirtschaft revolutionéiert

De Marinesecteur ass eng richteg global wirtschaftlech Muecht, déi op e 150 Milliarde Maart navigéiert ass ...

1 Mee 2024

Verëffentlecher an OpenAI ënnerschreiwen Ofkommes fir de Flux vun Informatioun ze regléieren, déi vu Kënschtlech Intelligenz veraarbecht gëtt

De leschte Méindeg huet d'Financial Times en Deal mat OpenAI ugekënnegt. FT lizenzéiert säi Weltklass Journalismus ...

30 Abrëll 2024