CSRF on pahatahtlik tegevus, mida teostab ründaja, kes teeb autentitud kasutaja nimel toiminguid, mis kahjustavad veebiturvalisust. Õnneks pakub Laravel tööriistu seda tüüpi haavatavuse vältimiseks.
CSRF ründab kaaperdada kasutajaseansse. Nad teevad seda, meelitades kasutajat esitama taotlust peidetud vormimärgendite või pahatahtlike URL-ide (piltide või linkide) kaudu ilma kasutaja teadmata.
See rünnak viib kasutaja seansi oleku muutumiseni, andmete lekkimiseni ja mõnikord võivad häkkerid rakenduses lõppkasutaja andmeid manipuleerida.
Ülaltoodud pilt illustreerib stsenaariumi, kus veebiturvalisust rikutakse. Ohver saadab päringu, klõpsates lingil (saadud), saates päringu veebisaidiserverisse, mis toob kaasa häkkeri soovitud efektid, kelle valdusse jõuab veebisaidi serverile juurdepääsuks ja sellega manipuleerimiseks kasulik teave.
Et parandada turvalisus Teie rakenduste veebis, genereerib Laravel igal kasutajaseansil turvalised märgid, mida ta kasutab tagamaks, et autentitud kasutaja on see, kes rakendust taotleb.
Kuna see tunnus muutub iga kord, kui kasutaja seanss uuesti luuakse, ei pääse ründaja sellele juurde.
Kui on taotlus muuta kasutajateavet serveri poolel (taustaprogrammis), näiteks POST
, PUT
, PATCH
e DELETE
, peate käskkirja lisama @csrf
taotlusvormis blade
HTML. The @csrf
seega on tegemist direktiiviga Blade
mida kasutatakse rakenduse poolt kinnitatud peidetud märgi genereerimiseks.
Direktiiv Blade
on Laraveli mallimootoris kasutatav süntaks tera . Faili loomiseks blade
peate andma sellele nime – meie puhul –, millele järgneb tera pikendus. See tähendab, et failil on nimi form.blade.php
.
Faili kasutatakse blade
kasutajatele veebilehel vaadete renderdamiseks. On paar eeljuhistdefinite või blade stenogrammi süntaksit, mida saate kasutada. Näiteks, @if
kontrollige, kas tingimus on täidetud, @empty
kontrollige, kas kirjed pole tühjad, @auth
kontrollige, kas kasutaja on autentitud ja nii edasi.
Aga tuleme tagasi direktiivi juurde @csrf
. Kasutage seda järgmiselt.
<form method="POST" action="{{route('pay')}}">
@csrf
</form>
Laraveli varasematel versioonidel oli erinev seadistus: mõlemad töötavad ja teevad sama asja.
<form method="POST" action="{{route('pay')}}">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>
Kui esitatavast vormitaotlusest puudub CSRF-i luba või see näib olevat kehtetu, saadab Laravel tõrketeate „Lehekülg aegunud” olekukoodiga 419.
Vahevara VerifyCsrfToken
tegeleb CSRF-i kontrollimisega Laraveli rakenduses. The middleware
on registreeritud Kernel.php
ja asub kataloogis app/Http/Middleware
. See tähendab, et middleware
see käivitatakse veebisiseste päringute puhul, mis pole API-dega seotud.
protected $middlewareGroups = [
'web' => [
.
.
.
.
.
\App\Http\Middleware\VerifyCsrfToken::class,
],
];
VerifyCsrfToken vahevara laiendab klassi Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
, st CSRF-i kinnitamine on defiklassi sees.
Uurime sügavamalt, kuidas Laravel CSRF-i kinnitamist käsitleb.
Klassi sees on meil funktsioon tokensMatch
.
protected function tokensMatch($request)
{
$token = $this->getTokenFromRequest($request);
return is_string($request->session()->token()) &&
is_string($token) &&
hash_equals($request->session()->token(), $token);
}
koodis määrab, kas seansi ja sisend-CSRF-märgid kattuvad.
Funktsioon teeb kahte asja:
$this->getTokenFromRequest
peidetud välja või päringu päise kaudu lisatud sissetuleva päringu luba. Token dekrüpteeritakse ja seejärel tagastatakse token muutuja juurde.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;
}
Koodis saab see päisest märgi
2. Kandke nii päringumärk kui ka seanss stringi ja seejärel kasutage hash_equals
sisseehitatud PHP-sse, et võrrelda, kas mõlemad stringid on võrdsed. Selle toimingu tulemus on alati bool (tõene) või (vale) .
Ercole Palmeri
Veeami Coveware jätkab küberväljapressimise juhtumitele reageerimise teenuste pakkumist. Coveware pakub kohtuekspertiisi ja heastamisvõimalusi…
Ennustav hooldus muudab nafta- ja gaasisektori pöördeliseks uuendusliku ja ennetava lähenemisega tehaste juhtimisele.…
Ühendkuningriigi CMA on väljastanud hoiatuse Big Techi käitumise kohta tehisintellekti turul. Seal…
Euroopa Liidu poolt hoonete energiatõhususe suurendamiseks koostatud roheliste majade dekreet on lõpetanud oma seadusandliku protsessi…