લેખ

Laravel વેબ સુરક્ષા: ક્રોસ-સાઇટ વિનંતી ફોર્જરી (CSRF) શું છે?

આ Laravel ટ્યુટોરીયલમાં આપણે વેબ સુરક્ષા વિશે વાત કરીએ છીએ અને વેબ એપ્લિકેશનને ક્રોસ-સાઇટ વિનંતી ફોર્જરી અથવા CSRF હુમલાઓથી કેવી રીતે સુરક્ષિત કરવી.

CSRF એ હુમલાખોર દ્વારા કરવામાં આવતી દૂષિત પ્રવૃત્તિ છે, જે વેબ સુરક્ષા માટે હાનિકારક, પ્રમાણિત વપરાશકર્તા વતી ક્રિયાઓ કરે છે. સદનસીબે, લારાવેલ આ પ્રકારની નબળાઈને રોકવા માટેના સાધનો પૂરા પાડે છે.

CSRF શું છે?

CSRF એટેક યુઝર સેશનને હાઇજેક કરે છે. તેઓ વપરાશકર્તાની જાણ વગર છુપાયેલા ફોર્મ ટૅગ્સ અથવા દૂષિત URL (છબીઓ અથવા લિંક્સ) દ્વારા વિનંતી સબમિટ કરવા માટે વપરાશકર્તાને છેતરીને આમ કરે છે.

આ હુમલો વપરાશકર્તા સત્રની સ્થિતિમાં ફેરફાર તરફ દોરી જાય છે, ડેટા લીક થાય છે અને કેટલીકવાર હેકર્સ એપ્લિકેશનમાં અંતિમ-વપરાશકર્તાના ડેટાની હેરફેર કરી શકે છે.

ઉપરની છબી એક દૃશ્ય દર્શાવે છે જ્યાં વેબ સુરક્ષાનો ભંગ થાય છે. પીડિત વ્યક્તિ એક લિંક (પ્રાપ્ત) પર ક્લિક કરીને, વેબસાઇટ સર્વરને વિનંતી મોકલીને વિનંતી મોકલે છે જે હેકર દ્વારા ઇચ્છિત અસરો ઉત્પન્ન કરશે, જે વેબસાઇટ સર્વરને ઍક્સેસ કરવા અને તેની સાથે ચાલાકી કરવા માટે ઉપયોગી માહિતીના કબજામાં આવે છે.

CSRF વિનંતીઓને કેવી રીતે અટકાવવી

સુધારવા માટે સુરક્ષા તમારી એપ્લીકેશનની વેબ, દરેક વપરાશકર્તા સત્રમાં, Laravel સુરક્ષિત ટોકન્સ જનરેટ કરે છે જેનો ઉપયોગ તે ખાતરી કરવા માટે કરે છે કે અધિકૃત વપરાશકર્તા જ એપ્લિકેશનની વિનંતી કરે છે.

કારણ કે આ ટોકન દરેક વખતે વપરાશકર્તા સત્ર પુનઃજનરેટ થાય ત્યારે બદલાય છે, હુમલાખોર તેને ઍક્સેસ કરી શકતો નથી.

જ્યારે પણ સર્વર સાઈડ (બેકએન્ડ) જેવી યુઝર માહિતી બદલવાની વિનંતી હોય POSTPUTPATCHDELETE, તમારે નિર્દેશનો સમાવેશ કરવો આવશ્યક છે @csrf વિનંતી ફોર્મમાં blade HTML. આ @csrf તેથી તે એક નિર્દેશ છે Blade એપ્લિકેશન દ્વારા માન્ય છુપાયેલ ટોકન જનરેટ કરવા માટે વપરાય છે.

આ નિર્દેશ Blade Laravel ટેમ્પલેટ એન્જિનમાં વપરાયેલ વાક્યરચના કહેવાય છે બ્લેડ . ફાઇલ બનાવવા માટે blade તમારે તેને નામ આપવું પડશે - અમારા કેસ ફોર્મમાં - પછી બ્લેડના વિસ્તરણ દ્વારા. આનો અર્થ એ છે કે ફાઇલનું નામ હશે form.blade.php.

ફાઇલનો ઉપયોગ થાય છે blade વેબ પૃષ્ઠ પર વપરાશકર્તાઓ માટે દૃશ્યો રેન્ડર કરવા માટે. ત્યાં કેટલાક પૂર્વ નિર્દેશો છેdefiનાઈટ અથવા બ્લેડ શોર્ટહેન્ડ સિન્ટેક્સ તમે ઉપયોગ કરી શકો છો. દાખ્લા તરીકે, @if શરત સંતુષ્ટ છે કે કેમ તે તપાસો, @empty તપાસો કે રેકોર્ડ ખાલી નથી, @auth તપાસો કે શું વપરાશકર્તા પ્રમાણિત છે અને તેથી વધુ.

પરંતુ ચાલો નિર્દેશ પર પાછા જઈએ @csrf. તમે તેનો ઉપયોગ કેવી રીતે કરો છો તે અહીં છે:

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

    @csrf
    
</form>

Laravel ના પહેલાનાં વર્ઝનમાં અલગ સેટઅપ હતું: તે બંને કામ કરે છે અને એક જ વસ્તુ કરે છે.

ઇનોવેશન ન્યૂઝલેટર
નવીનતા પરના સૌથી મહત્વપૂર્ણ સમાચારને ચૂકશો નહીં. તેમને ઇમેઇલ દ્વારા પ્રાપ્ત કરવા માટે સાઇન અપ કરો.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

જ્યારે CSRF ટોકન સબમિટ કરવામાં આવી રહેલી ફોર્મ વિનંતીમાંથી ખૂટે છે અથવા જો તે અમાન્ય જણાય છે, તો Laravel 419 સ્ટેટસ કોડ સાથે "પૃષ્ઠ એક્સપાયર્ડ" ભૂલ સંદેશ ફેંકે છે.

સીએસઆરએફ ચકાસણી કેવી રીતે અને ક્યાં થાય છે

મિડલવેર VerifyCsrfToken Laravel એપ્લિકેશનની અંદર CSRF ચકાસણીનું સંચાલન કરે છે. આ middleware માં નોંધાયેલ છે Kernel.php અને ડિરેક્ટરીમાં સ્થિત છે app/Http/Middleware. આનો અર્થ એ છે કે ધ middleware તે વેબની અંદર વિનંતીઓ માટે ટ્રિગર થાય છે, API થી સંબંધિત નથી.

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

VerifyCsrfToken મિડલવેર વર્ગને વિસ્તૃત કરે છે Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, એટલે કે CSRF વેરિફિકેશન છે defiરાત્રે વર્ગની અંદર.

લારેવેલ CSRF વેરિફિકેશનને કેવી રીતે હેન્ડલ કરે છે તે શોધવા માટે ચાલો વધુ ઊંડાણમાં જઈએ.

વર્ગની અંદર, અમારી પાસે કાર્ય છે tokensMatch.

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

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

કોડમાં નક્કી કરે છે કે શું સત્ર અને ઇનપુટ CSRF ટોકન્સ મેળ ખાય છે.

કાર્ય બે વસ્તુઓ કરે છે:

  1. મેળવો $this->getTokenFromRequest છુપાયેલા ફીલ્ડ અથવા વિનંતી હેડર દ્વારા જોડાયેલ ઇનકમિંગ વિનંતીમાંથી ટોકન. ટોકન ડિક્રિપ્ટ થાય છે અને પછી ટોકન વેરીએબલ પર પરત આવે છે.
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;
}

કોડમાં તે હેડરમાંથી ટોકન મેળવે છે

2. વિનંતી ટોકન અને સત્ર બંનેને સ્ટ્રિંગ પર કાસ્ટ કરો અને પછી ઉપયોગ કરો hash_equals જો બંને શબ્દમાળાઓ સમાન હોય તો સરખામણી કરવા માટે PHP માં બિલ્ટ. આ ઓપરેશનનું પરિણામ હંમેશા આવે છે બૂલ (સાચું) અથવા (ખોટું) .

Ercole Palmeri

ઇનોવેશન ન્યૂઝલેટર
નવીનતા પરના સૌથી મહત્વપૂર્ણ સમાચારને ચૂકશો નહીં. તેમને ઇમેઇલ દ્વારા પ્રાપ્ત કરવા માટે સાઇન અપ કરો.

તાજેતરના લેખો

Excel માં ડેટા કેવી રીતે એકીકૃત કરવો

કોઈપણ વ્યવસાય કામગીરી વિવિધ સ્વરૂપોમાં પણ ઘણો ડેટા ઉત્પન્ન કરે છે. એક્સેલ શીટમાંથી આ ડેટાને મેન્યુઅલી દાખલ કરો...

14 મે 2024

સિસ્કો ટેલોસ ત્રિમાસિક વિશ્લેષણ: ગુનેગારો દ્વારા લક્ષિત કોર્પોરેટ ઈમેલ્સ ઉત્પાદન, શિક્ષણ અને આરોગ્યસંભાળ સૌથી વધુ અસરગ્રસ્ત ક્ષેત્રો છે

2024ના પ્રથમ ત્રણ મહિનામાં કંપનીના ઈમેઈલનું સમાધાન છેલ્લા ત્રિમાસિક ગાળાની સરખામણીમાં બમણાથી વધુ વધ્યું છે.

14 મે 2024

ઇન્ટરફેસ સેગ્રિગેશન સિદ્ધાંત (ISP), ચોથો સોલિડ સિદ્ધાંત

ઇન્ટરફેસ સેગ્રિગેશનનો સિદ્ધાંત ઑબ્જેક્ટ-ઓરિએન્ટેડ ડિઝાઇનના પાંચ સોલિડ સિદ્ધાંતોમાંથી એક છે. વર્ગમાં હોવું જોઈએ...

14 મે 2024

સારી રીતે કરવામાં આવેલ વિશ્લેષણ માટે, Excel માં ડેટા અને સૂત્રોને શ્રેષ્ઠ રીતે કેવી રીતે ગોઠવવું

માઈક્રોસોફ્ટ એક્સેલ એ ડેટા એનાલિસિસ માટેનું રેફરન્સ ટૂલ છે, કારણ કે તે ડેટા સેટ્સનું આયોજન કરવા માટે ઘણી સુવિધાઓ પ્રદાન કરે છે,…

14 મે 2024

બે મહત્વપૂર્ણ વોલાયન્સ ઇક્વિટી ક્રાઉડફંડિંગ પ્રોજેક્ટ્સ માટે સકારાત્મક નિષ્કર્ષ: જેસોલો વેવ આઇલેન્ડ અને મિલાનો વાયા રેવેના

2017 થી રિયલ એસ્ટેટ ક્રાઉડફંડિંગના ક્ષેત્રમાં યુરોપના નેતાઓમાં Walliance, SIM અને પ્લેટફોર્મ, પૂર્ણ થવાની જાહેરાત કરે છે…

13 મે 2024

ફિલામેન્ટ શું છે અને લારેવેલ ફિલામેન્ટનો ઉપયોગ કેવી રીતે કરવો

ફિલામેન્ટ એ "એક્સિલરેટેડ" લારેવેલ ડેવલપમેન્ટ ફ્રેમવર્ક છે, જે ઘણા ફુલ-સ્ટેક ઘટકો પ્રદાન કરે છે. તે પ્રક્રિયાને સરળ બનાવવા માટે રચાયેલ છે…

13 મે 2024

કૃત્રિમ બુદ્ધિમત્તાના નિયંત્રણ હેઠળ

"મારે મારી ઉત્ક્રાંતિ પૂર્ણ કરવા માટે પાછા ફરવું પડશે: હું મારી જાતને કમ્પ્યુટરની અંદર રજૂ કરીશ અને શુદ્ધ ઊર્જા બનીશ. એકવાર સ્થાયી થયા પછી…

10 મે 2024

ગૂગલની નવી આર્ટિફિશિયલ ઇન્ટેલિજન્સ ડીએનએ, આરએનએ અને "જીવનના તમામ પરમાણુઓ"નું મોડેલ બનાવી શકે છે.

Google DeepMind તેના આર્ટિફિશિયલ ઇન્ટેલિજન્સ મોડલનું સુધારેલું સંસ્કરણ રજૂ કરી રહ્યું છે. નવું સુધારેલું મોડલ માત્ર…

9 મે 2024

તમારી ભાષામાં ઇનોવેશન વાંચો

ઇનોવેશન ન્યૂઝલેટર
નવીનતા પરના સૌથી મહત્વપૂર્ણ સમાચારને ચૂકશો નહીં. તેમને ઇમેઇલ દ્વારા પ્રાપ્ત કરવા માટે સાઇન અપ કરો.

અમને અનુસરો