makala

Usalama wa Wavuti wa Laravel: Ughushi wa Ombi la Tovuti Msalaba (CSRF) ni nini?

Katika somo hili la Laravel tunazungumza kuhusu Usalama wa Wavuti na jinsi ya kulinda programu ya wavuti dhidi ya Kughushi Ombi la Tovuti Msalaba au mashambulizi ya CSRF.

CSRF ni shughuli hasidi inayofanywa na mshambulizi, ambaye hufanya vitendo kwa niaba ya mtumiaji aliyeidhinishwa, ambayo ni hatari kwa usalama wa wavuti. Kwa bahati nzuri, Laravel hutoa zana za kuzuia aina hii ya hatari.

CSRF ni nini?

CSRF inashambulia nyara vipindi vya watumiaji. Hufanya hivyo kwa kumdanganya mtumiaji kuwasilisha ombi kupitia lebo za fomu zilizofichwa au URL hasidi (picha au viungo) bila mtumiaji kujua.

Shambulio hili husababisha mabadiliko katika hali ya kipindi cha mtumiaji, uvujaji wa data, na wakati mwingine wavamizi wanaweza kudanganya data ya mtumiaji wa mwisho katika programu.

Picha iliyo hapo juu inaonyesha hali ambapo usalama wa wavuti umekiukwa. Mhasiriwa hutuma ombi kwa kubofya kiungo (kilichopokewa), kutuma ombi kwa seva ya tovuti ambayo itatoa athari zinazohitajika na mdukuzi, ambaye anapata habari muhimu kwa kupata na kuchezea seva ya tovuti.

Jinsi ya kuzuia maombi ya CSRF

Ili kuboresha usalama mtandao wa programu zako, katika kila kipindi cha mtumiaji, Laravel hutengeneza tokeni salama ambazo hutumia ili kuhakikisha kuwa mtumiaji aliyeidhinishwa ndiye anayeomba programu.

Kwa sababu tokeni hii hubadilika kila wakati kipindi cha mtumiaji kinapoundwa upya, mvamizi hawezi kuifikia.

Wakati wowote kuna ombi la kubadilisha habari ya mtumiaji kwenye upande wa seva (backend) kama POSTPUTPATCHDELETE, lazima ujumuishe maagizo @csrf katika fomu ya ombi blade HTML. The @csrf kwa hiyo ni maagizo Blade kutumika kutengeneza tokeni iliyofichwa iliyothibitishwa na programu.

Maagizo Blade ni sintaksia inayotumika ndani ya injini ya kiolezo cha Laravel inayoitwa Blade . Ili kuunda faili blade unapaswa kuipa jina - kwa fomu yetu ya kesi - ikifuatiwa na ugani wa blade. Hii ina maana kwamba faili itakuwa na jina form.blade.php.

Faili inatumika blade kutoa maoni kwa watumiaji kwenye ukurasa wa wavuti. Kuna maagizo kadhaa ya awalidefinite au blade shorthand syntax unaweza kutumia. Kwa mfano, @if angalia ikiwa hali imeridhika, @empty angalia ikiwa rekodi sio tupu, @auth angalia ikiwa mtumiaji amethibitishwa na kadhalika.

Lakini turudi kwenye maagizo @csrf. Hivi ndivyo unavyoitumia:

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

    @csrf
    
</form>

Matoleo ya awali ya Laravel yalikuwa na usanidi tofauti: wote wawili hufanya kazi na kufanya kitu kimoja.

Jarida la uvumbuzi
Usikose habari muhimu zaidi kuhusu uvumbuzi. Jisajili ili kuzipokea kwa barua pepe.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

Tokeni ya CSRF inapokosekana kwenye ombi la fomu inayowasilishwa au ikionekana kuwa si sahihi, Laravel hutuma ujumbe wa hitilafu wa "Ukurasa Umeisha" na msimbo wa hali ya 419.

Jinsi na wapi uthibitishaji wa CSRF unafanyika

Vyombo vya kati VerifyCsrfToken inashughulikia uthibitishaji wa CSRF ndani ya programu ya Laravel. The middleware imesajiliwa ndani Kernel.php na iko kwenye saraka app/Http/Middleware. Hii ina maana kwamba middleware inaanzishwa kwa maombi ndani ya wavuti, isiyohusiana na API.

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

Programu ya kati ya VerifyCsrfToken huongeza darasa Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, yaani uthibitishaji wa CSRF ni defiusiku ndani ya darasa.

Hebu tuchimbue zaidi ili kujua jinsi Laravel hushughulikia uthibitishaji wa CSRF.

Ndani ya darasa, tunayo kazi tokensMatch.

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

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

katika msimbo huamua ikiwa kipindi na tokeni za CSRF za ingizo zinalingana.

Kitendaji hufanya mambo mawili:

  1. pata $this->getTokenFromRequest ishara kutoka kwa ombi linaloingia lililoambatishwa kupitia uwanja uliofichwa au kichwa cha ombi. Ishara imesimbwa na kisha kurejeshwa kwa utofauti wa ishara.
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;
}

Kwenye nambari pata ishara kutoka kwa kichwa

2. Tuma ishara ya ombi na kipindi kwa kamba na kisha utumie hash_equals iliyojengwa katika PHP kulinganisha ikiwa kamba zote mbili ni sawa. Matokeo ya operesheni hii ni daima bool (kweli) au (uongo) .

Ercole Palmeri

Jarida la uvumbuzi
Usikose habari muhimu zaidi kuhusu uvumbuzi. Jisajili ili kuzipokea kwa barua pepe.

Makala ya hivi karibuni

Uingiliaji wa Kibunifu katika Ukweli Ulioboreshwa, na mtazamaji wa Apple katika Catania Polyclinic

Operesheni ya ophthalmoplasty kwa kutumia kitazamaji cha kibiashara cha Apple Vision Pro ilifanywa katika Catania Polyclinic…

3 Mei 2024

Faida za Kurasa za Kuchorea kwa Watoto - ulimwengu wa uchawi kwa kila kizazi

Kukuza ujuzi mzuri wa magari kupitia kupaka rangi huwatayarisha watoto kwa ujuzi changamano zaidi kama vile kuandika. Kupaka rangi...

2 Mei 2024

Wakati Ujao Upo Hapa: Jinsi Sekta ya Usafirishaji Inavyofanya Mapinduzi katika Uchumi wa Kimataifa

Sekta ya majini ni nguvu ya kweli ya kiuchumi duniani, ambayo imepitia kwenye soko la bilioni 150 ...

1 Mei 2024

Wachapishaji na OpenAI hutia saini mikataba ya kudhibiti mtiririko wa taarifa zinazochakatwa na Intelligence Artificial Intelligence

Jumatatu iliyopita, Financial Times ilitangaza makubaliano na OpenAI. FT inatoa leseni kwa uandishi wake wa habari wa kiwango cha kimataifa…

Aprili 30 2024