Ko te CSRF he mahi kino e mahia ana e te tangata whakaeke, e mahi ana i nga mahi mo te kaiwhakamahi kua whakamanahia, e kino ana ki te haumarutanga tukutuku. Waimarie, ka whakaratohia e Laravel nga taputapu hei aukati i tenei momo whakaraerae.
Ka whakaekehia e te CSRF nga waahi kaiwhakamahi. Ka mahia e ratou tenei ma te tinihanga i tetahi kaiwhakamahi ki te tuku tono ma nga tohu ahua huna, URL kino ranei (whakaahua, hononga ranei) me te kore mohio o te kaiwhakamahi.
Ko tenei whakaeke ka huri i te ahua o te huihuinga kaiwhakamahi, ka pakaru nga raraunga, a i etahi wa ka taea e nga kaiwhaiwhai te whakahaere i nga raraunga kaiwhakamahi mutunga i roto i tetahi tono.
Ko te ahua i runga ake nei e whakaatu ana i tetahi ahuatanga kua takahia te haumarutanga tukutuku. Ka tukuna he tono e te kaitukino ma te paato i te hono (kua riro), ka tukuna he tono ki tetahi kaitoi paetukutuku ka puta nga paanga e hiahiatia ana e te kaiwhaiwhai, ka riro mai i a ia nga korero whai hua mo te uru me te raweke i te tūmau paetukutuku.
Hei whakapai ake i nga haumarutanga paetukutuku o o tono, i ia wahanga kaiwhakamahi, ka whakaputa a Laravel i nga tohu haumaru e whakamahia ana hei whakarite ko te kaiwhakamahi whakamotuhēhē te tangata e tono ana i te tono.
Na te mea ka huri tenei tohu i nga wa katoa ka whakahouhia he waahi kaiwhakamahi, kaore e taea e te kaitukino te uru atu.
I nga wa katoa he tono ki te whakarereke i nga korero a nga kaiwhakamahi i te taha o te tūmau (muri) penei POST
, PUT
, PATCH
e DELETE
, me whakauru e koe te tohutohu @csrf
i roto i te puka tono blade
HTML. Ko te @csrf
na reira he tohutohu Blade
whakamahia hei whakaputa i tetahi tohu huna kua whakamanahia e te tono.
Ko te tohutohu Blade
Ko te wetereo e whakamahia ana i roto i te miihini tauira Laravel e kiia nei Blade . Hei hanga i tetahi konae blade
me whakaingoatia e koe - i roto i ta maatau ahua - ka whai i te toronga o te mata. Ko te tikanga ka whai ingoa te konae form.blade.php
.
Ka whakamahia te kōnae blade
ki te whakaatu tirohanga mo nga kaiwhakamahi i runga i te wharangi paetukutuku. E rua nga tohutohu-muadefinite, blade shorthand syntax ka taea e koe te whakamahi. Hei tauira, @if
tirohia mehemea kua makona tetahi ahuatanga, @empty
tirohia mena karekau nga rekoata i te putua, @auth
tirohia mena kua whakamotuhēhēhia he kaiwhakamahi me te aha.
Engari kia hoki ki te tohutohu @csrf
. Anei me pehea te whakamahi:
<form method="POST" action="{{route('pay')}}">
@csrf
</form>
Ko nga putanga o mua o Laravel he rereke te tatūnga: he rite tonu ta raua mahi me te mahi ano.
<form method="POST" action="{{route('pay')}}">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>
I te wa e ngaro ana te tohu CSRF mai i te tono puka e tukuna ana, ki te ahua kore ranei, ka tukuna e Laravel he karere hapa "Wharangi kua pau" me te tohu mana 419.
Ko te middleware VerifyCsrfToken
ka mau i te manatoko CSRF i roto i te tono Laravel. Ko te middleware
kua rehitatia ki roto Kernel.php
a kei roto i te whaiaronga app/Http/Middleware
. Ko te tikanga ko te middleware
ka puta mo nga tono i roto i te paetukutuku, kaore e pa ana ki nga API.
protected $middlewareGroups = [
'web' => [
.
.
.
.
.
\App\Http\Middleware\VerifyCsrfToken::class,
],
];
Ka whakawhānuihia e te VerifyCsrfToken middleware te karaehe Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
, i.e. CSRF verification is defipo i roto i te akomanga.
Kia hohonu ake te keri kia mohio ai me pehea te whakahaere a Laravel i te manatoko CSRF.
I roto i te karaehe, kei a tatou te mahi tokensMatch
.
protected function tokensMatch($request)
{
$token = $this->getTokenFromRequest($request);
return is_string($request->session()->token()) &&
is_string($token) &&
hash_equals($request->session()->token(), $token);
}
i roto i te waehere ka whakatau mena he rite te waahi me nga tohu whakaurunga CSRF.
E rua nga mahi a te mahi:
$this->getTokenFromRequest
te tohu mai i te tono taumai e piri ana ma te mara huna, te pane tono ranei. Ka wetewetehia te tohu ka whakahokia ki te taurangi tohu.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;
}
I roto i te waehere ka whiwhi tohu mai i te pane
2. Makahia te tohu tono me te waahi ki te aho ka whakamahi hash_equals
hangaia i roto i te PHP hei whakataurite mena he rite nga aho e rua. Ko te hua o tenei mahi i nga wa katoa bool (pono) ranei (teka) .
Ercole Palmeri
I mahia he mahi ophthalmoplasty ma te whakamahi i te kaimataki arumoni Apple Vision Pro i te Catania Polyclinic…
Ko te whakawhanake i nga pukenga motuka pai na roto i te tae ka whakarite i nga tamariki mo nga pukenga uaua ake penei i te tuhi. Ki te tae…
Ko te waahanga moana he mana ohaoha pono o te ao, kua whakatere ki te maakete 150 piriona ...
I te Mane kua hipa, i panuitia e te Financial Times tetahi mahi me OpenAI. Ka raihana a FT i tana kairipoata o te ao…