vasa

Laravel Securitatis Web: Quid est Cross-Site Request Forgery (CSRF) ?

In hoc Laravel doceo loquimur de Securitatis interretiali et quomodo tueri applicationem telae a Cruce-Site Request Forgery vel CSRF impetus.

CSRF actio malitiosa est ab impugnante, qui actiones pro usuario authentico exercet, securitati interretiali detrimento. Fortunate Laravel instrumenta praebet ut hoc genus vulnerabilitas prohibeant.

Quid est CSRF?

CSRF oppugnat sessiones hijack usuario. Id faciunt fraudem utentis in petitione exhibenda per formas occultas vel delatas malitiosas (imagines vel nexus) sine cognitione usoris.

Hic impetus ad mutationem inducit sessionis in statu usoris, notitia liberorum, et interdum hackers mutare potest in applicatione data finis usoris.

Imago supra missionem illustrat ubi securitas interreta interrupit. Hostia petitionem strepitando in nexum mittit (accepit), petitionem mittit ad servo website, qui effectus producet optatos ab piratica, qui in possessionem venit notitiae utilis ad accessionem et manipulationem servo website.

Quam ne CSRF petitiones

Ut amplio pignus telam applicationum tuarum in singulis sessionibus usoris, Laravel signa tuta generat, quibus utitur ut usor authenticus applicationis petens sit.

Quia hoc signum mutat omni tempore sessionis usoris regeneratur, oppugnator accedere non potest.

Quandocumque rogatur ut user informationem mutare de servo parte (backend) similis POSTPUTPATCHDELETE, oportet includere directivum @csrf in petentibus formam blade HTML. The @csrf est igitur directivum Blade occultum generare applicatione usus convalescit.

directivum Blade usus est in syntaxi engine dicitur in Laravel template lamina . Ad creare lima blade nomen tibi dare - in nostro casu formam - extensio herbae sequitur. Id quod tabella nomen habebit form.blade.php.

Tabella adhibetur blade ut in pagina interretiali sententias pro usoribus redderet. Sunt duo pre-praescriptionesdefinite vel ferrum notas commentus syntaxin uti potes. Exempli gratia @if reprehendo si condicio satisfactum est; @empty reprehendo si monumenta vacua non sunt, @auth reprehendo si a user authenticitatis signo muniantur etc.

Sed eamus ad directivam @csrf. Ecce quomodo uteris:

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

    @csrf
    
</form>

Priores versiones Laravel diversam paroem habuerunt: ambo operantur et idem faciunt.

Innovation newsletter
Non fallunt praecipuum nuntium in innovatione. Sign up to receive them by email.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

Cum CSRF indicium deest a forma petitionis propositae vel si invalidum apparet, Laravel "Page Expiratus" errorem nuntium cum 419 codice status iacit.

Quomodo et ubi CSRF verificationem accipit?

The middleware VerifyCsrfToken tractat CSRF verificationem in applicatione Laravel. The middleware est relatus in Kernel.php et sita in indicem app/Http/Middleware. Hoc significat quod middleware Urguet petitiones intra telam, quae ad APIs non refertur.

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

Et VerifyCsrfToken middleware extendit classis Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, CSRF verificationis est i.e definita in genere.

Altius fodiamus ut cognoscamus quomodo verificationem Laravel tractat CSRF.

Intra genus, munus habemus tokensMatch.

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

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

in codice determinat num sessionis et input CSRF signa congruunt.

De officio duo facit;

  1. accipere " $this->getTokenFromRequest signum ex instantiae advenientis adnexa per campum absconditum vel instantia capitis. Vestigium decryptum est et postea ad signum variabile rediit.
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;
}

In codice accipit signum a header

2. Mittite petitionem tum signo et sessione ad filum et deinde utere hash_equals in PHP constructa comparare si ambae chordae aequales sint. Effectus huius operationis semper est bool (verum) seu (falsum) .

Ercole Palmeri

Innovation newsletter
Non fallunt praecipuum nuntium in innovatione. Sign up to receive them by email.

Recent Articles

Interventus innovativus in re aucta, cum Apple inspectoris Catania in Polyclinico

An ophthalmoplastia operandi usus Apple Visionis Pro inspectoris commercialis fiebat apud Catinam Polyclinic…

3 Maii 2024

Beneficia Donec Paginae pro Pueris - mundo magicae pro omnibus saeculis

Artes motorias enucleans subtilis per fuco praeparat filios ad plures artes implicatas sicut scripturas. Colorare…

2 Maii 2024

Futurum est hic: Quomodo Shipping Industry est Revolutionizing Global Economy

Secta navalis vera potentia global oeconomici est, quae ad 150 miliarda mercatus navigavit.

1 Maii 2024

Conventiones Editores et OpenAI signum habent ad normas procedendi per informationes profluentes ab Intelligentia Artificiali

Ultima Lunae, Financial Times pacisci cum OpenAI denuntiavit. FT licentias suae diurnariae mundi-classis.

April 30 2024