CSRF jẹ iṣẹ irira ti o ṣe nipasẹ ikọlu kan, ti o ṣe awọn iṣe fun aṣoju olumulo kan, ti o bajẹ aabo wẹẹbu. O da, Laravel pese awọn irinṣẹ lati ṣe idiwọ iru ailagbara yii.
CSRF kọlu awọn akoko olumulo jijako. Wọn ṣe eyi nipa tàn olumulo kan lati fi ibeere silẹ nipasẹ awọn aami fọọmu ti o farapamọ tabi awọn URL irira (awọn aworan tabi awọn ọna asopọ) laisi imọ olumulo.
Ikọlu yii nyorisi iyipada ni ipo igba olumulo, jijo data, ati nigba miiran awọn olosa le ṣe afọwọyi data olumulo ipari ninu ohun elo kan.
Aworan ti o wa loke ṣe apejuwe oju iṣẹlẹ kan nibiti aabo wẹẹbu ti ṣẹ. Olufaragba naa firanṣẹ ibeere kan nipa titẹ si ọna asopọ kan (ti o gba), fifiranṣẹ ibeere kan si olupin oju opo wẹẹbu kan eyiti yoo ṣe awọn ipa ti o fẹ nipasẹ agbonaeburuwole, ti o wa sinu ohun-ini alaye ti o wulo fun iwọle ati ifọwọyi olupin oju opo wẹẹbu naa.
Lati mu awọn aabo oju opo wẹẹbu ti awọn ohun elo rẹ, ni igba olumulo kọọkan, Laravel n ṣe awọn ami-ami to ni aabo eyiti o nlo lati rii daju pe olumulo ti o jẹri ni ẹni ti n beere ohun elo naa.
Nitoripe ami yi yipada ni gbogbo igba ti igba olumulo kan ti tun ṣe, ikọlu ko le wọle si.
Nigbakugba ti ibeere ba wa lati yi alaye olumulo pada ni ẹgbẹ olupin (ẹhin) bii POST
, PUT
, PATCH
e DELETE
, o gbọdọ fi ilana naa kun @csrf
ninu awọn ìbéèrè fọọmu blade
HTML. Awọn @csrf
Nitorina o jẹ itọnisọna kan Blade
ti a lo lati ṣe ina aami ti o farapamọ ti a fọwọsi nipasẹ ohun elo naa.
Ilana naa Blade
jẹ sintasi ti a lo laarin ẹrọ awoṣe Laravel ti a pe Blade . Lati ṣẹda faili kan blade
o ni lati fun ni orukọ kan - ni fọọmu ọran wa - atẹle nipa itẹsiwaju ti abẹfẹlẹ. Eyi tumọ si pe faili yoo ni orukọ form.blade.php
.
A lo faili naa blade
lati ṣe awọn iwo fun awọn olumulo lori oju-iwe wẹẹbu. Awọn itọsọna iṣaaju-meji lo wadefinite tabi abẹfẹlẹ shorthand sintasi o le lo. Fun apere, @if
ṣayẹwo ti ipo kan ba ni itẹlọrun, @empty
ṣayẹwo ti awọn igbasilẹ ko ba ṣofo, @auth
ṣayẹwo ti olumulo kan ba jẹ ifọwọsi ati bẹbẹ lọ.
Ṣugbọn jẹ ki a pada si itọsọna naa @csrf
. Eyi ni bi o ṣe nlo:
<form method="POST" action="{{route('pay')}}">
@csrf
</form>
Awọn ẹya iṣaaju ti Laravel ni iṣeto ti o yatọ: awọn mejeeji ṣiṣẹ ati ṣe ohun kanna.
<form method="POST" action="{{route('pay')}}">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>
Nigbati ami CSRF ba sonu lati ibeere fọọmu ti a fi silẹ tabi ti o ba han pe ko wulo, Laravel ju ifiranṣẹ aṣiṣe “Opin Oju-iwe” kan pẹlu koodu ipo 419 kan.
Awọn middleware VerifyCsrfToken
n kapa ijerisi CSRF laarin ohun elo Laravel. Awọn middleware
ti forukọsilẹ ni Kernel.php
ati ki o ti wa ni be ni liana app/Http/Middleware
. Eleyi tumo si wipe awọn middleware
o jẹ okunfa fun awọn ibeere laarin oju opo wẹẹbu, ko ni ibatan si awọn API.
protected $middlewareGroups = [
'web' => [
.
.
.
.
.
\App\Http\Middleware\VerifyCsrfToken::class,
],
];
VerifyCsrfToken middleware fa kilaasi naa gbooro Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
, ie CSRF ijerisi ni definite laarin kilasi.
Jẹ ki a ma wà jinle lati wa bawo ni Laravel ṣe n kapa ijẹrisi CSRF.
Ninu kilasi, a ni iṣẹ naa tokensMatch
.
protected function tokensMatch($request)
{
$token = $this->getTokenFromRequest($request);
return is_string($request->session()->token()) &&
is_string($token) &&
hash_equals($request->session()->token(), $token);
}
ninu koodu pinnu boya igba ati awọn ami CSRF igbewọle baramu.
Iṣẹ naa ṣe awọn nkan meji:
$this->getTokenFromRequest
ami lati ibeere ti nwọle ti a so nipasẹ aaye ti o farapamọ tabi akọsori ibeere. Àmi ti wa ni decrypted ati ki o si pada si awọn àmi ayípadà.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;
}
Ninu koodu ti o gba àmi lati akọsori
2. Sọ mejeeji aami ibeere ati igba si okun kan lẹhinna lo hash_equals
ti a ṣe sinu PHP lati ṣe afiwe ti awọn okun mejeeji ba dọgba. Abajade ti isẹ yii jẹ nigbagbogbo bool (otitọ) tabi (eke) .
Ercole Palmeri
Ni ọjọ Aarọ to kọja, Awọn akoko Iṣowo kede adehun kan pẹlu OpenAI. FT ṣe iwe-aṣẹ iwe-akọọlẹ agbaye rẹ…
Awọn miliọnu eniyan sanwo fun awọn iṣẹ ṣiṣanwọle, san awọn idiyele ṣiṣe alabapin oṣooṣu. O jẹ ero ti o wọpọ pe o…
Coveware nipasẹ Veeam yoo tẹsiwaju lati pese awọn iṣẹ esi iṣẹlẹ ikọlu cyber. Coveware yoo funni ni awọn oniwadi ati awọn agbara atunṣe…
Itọju isọtẹlẹ jẹ iyipada ti eka epo & gaasi, pẹlu imotuntun ati ọna imudani si iṣakoso ọgbin.…