Tefito

Haumarutanga Tukutuku Laravel: He aha te Whakawhiti Tono Whakawhiti (CSRF) ?

I roto i tenei akoranga Laravel e korero ana matou mo te Haumarutanga Tukutuku me pehea te tiaki i tetahi tono paetukutuku mai i te Whakapae Tono Whakawhiti, i nga whakaeke CSRF ranei.

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.

He aha te CSRF?

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.

Me pehea te aukati i nga tono CSRF

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 POSTPUTPATCHDELETE, 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.

Panui houtanga
Kaua e ngaro nga korero tino nui mo te mahi auaha. Waitohu ki te whiwhi i a raatau ma te imeera.
<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.

Me pehea me te waahi ka whakahaerehia te manatoko CSRF

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:

  1. tiki $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

Panui houtanga
Kaua e ngaro nga korero tino nui mo te mahi auaha. Waitohu ki te whiwhi i a raatau ma te imeera.

Nga tuhinga o mua

Te wawaotanga auaha i roto i te Reality Whakanuia, me tetahi kaitirotiro Apple i te Catania Polyclinic

I mahia he mahi ophthalmoplasty ma te whakamahi i te kaimataki arumoni Apple Vision Pro i te Catania Polyclinic…

3 May 2024

Nga Hua o nga Wharangi Tae mo nga Tamariki - he ao makutu mo nga reanga katoa

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…

2 May 2024

Kei konei te heke mai: Me pehea te Ahumahi kaipuke e huri ana i te ohanga o te ao

Ko te waahanga moana he mana ohaoha pono o te ao, kua whakatere ki te maakete 150 piriona ...

1 May 2024

Ka haina nga Kaiwhakaputa me te OpenAI i nga whakaaetanga hei whakahaere i te rere o nga korero i tukatukahia e Artificial Intelligence

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…

30 Paenga-whāwhā 2024