CSRF એ હુમલાખોર દ્વારા કરવામાં આવતી દૂષિત પ્રવૃત્તિ છે, જે વેબ સુરક્ષા માટે હાનિકારક, પ્રમાણિત વપરાશકર્તા વતી ક્રિયાઓ કરે છે. સદનસીબે, લારાવેલ આ પ્રકારની નબળાઈને રોકવા માટેના સાધનો પૂરા પાડે છે.
CSRF એટેક યુઝર સેશનને હાઇજેક કરે છે. તેઓ વપરાશકર્તાની જાણ વગર છુપાયેલા ફોર્મ ટૅગ્સ અથવા દૂષિત URL (છબીઓ અથવા લિંક્સ) દ્વારા વિનંતી સબમિટ કરવા માટે વપરાશકર્તાને છેતરીને આમ કરે છે.
આ હુમલો વપરાશકર્તા સત્રની સ્થિતિમાં ફેરફાર તરફ દોરી જાય છે, ડેટા લીક થાય છે અને કેટલીકવાર હેકર્સ એપ્લિકેશનમાં અંતિમ-વપરાશકર્તાના ડેટાની હેરફેર કરી શકે છે.
ઉપરની છબી એક દૃશ્ય દર્શાવે છે જ્યાં વેબ સુરક્ષાનો ભંગ થાય છે. પીડિત વ્યક્તિ એક લિંક (પ્રાપ્ત) પર ક્લિક કરીને, વેબસાઇટ સર્વરને વિનંતી મોકલીને વિનંતી મોકલે છે જે હેકર દ્વારા ઇચ્છિત અસરો ઉત્પન્ન કરશે, જે વેબસાઇટ સર્વરને ઍક્સેસ કરવા અને તેની સાથે ચાલાકી કરવા માટે ઉપયોગી માહિતીના કબજામાં આવે છે.
સુધારવા માટે સુરક્ષા તમારી એપ્લીકેશનની વેબ, દરેક વપરાશકર્તા સત્રમાં, Laravel સુરક્ષિત ટોકન્સ જનરેટ કરે છે જેનો ઉપયોગ તે ખાતરી કરવા માટે કરે છે કે અધિકૃત વપરાશકર્તા જ એપ્લિકેશનની વિનંતી કરે છે.
કારણ કે આ ટોકન દરેક વખતે વપરાશકર્તા સત્ર પુનઃજનરેટ થાય ત્યારે બદલાય છે, હુમલાખોર તેને ઍક્સેસ કરી શકતો નથી.
જ્યારે પણ સર્વર સાઈડ (બેકએન્ડ) જેવી યુઝર માહિતી બદલવાની વિનંતી હોય POST
, PUT
, PATCH
e DELETE
, તમારે નિર્દેશનો સમાવેશ કરવો આવશ્યક છે @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 ટોકન્સ મેળ ખાય છે.
કાર્ય બે વસ્તુઓ કરે છે:
$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
કોઈપણ વ્યવસાય કામગીરી વિવિધ સ્વરૂપોમાં પણ ઘણો ડેટા ઉત્પન્ન કરે છે. એક્સેલ શીટમાંથી આ ડેટાને મેન્યુઅલી દાખલ કરો...
2024ના પ્રથમ ત્રણ મહિનામાં કંપનીના ઈમેઈલનું સમાધાન છેલ્લા ત્રિમાસિક ગાળાની સરખામણીમાં બમણાથી વધુ વધ્યું છે.
ઇન્ટરફેસ સેગ્રિગેશનનો સિદ્ધાંત ઑબ્જેક્ટ-ઓરિએન્ટેડ ડિઝાઇનના પાંચ સોલિડ સિદ્ધાંતોમાંથી એક છે. વર્ગમાં હોવું જોઈએ...
માઈક્રોસોફ્ટ એક્સેલ એ ડેટા એનાલિસિસ માટેનું રેફરન્સ ટૂલ છે, કારણ કે તે ડેટા સેટ્સનું આયોજન કરવા માટે ઘણી સુવિધાઓ પ્રદાન કરે છે,…
2017 થી રિયલ એસ્ટેટ ક્રાઉડફંડિંગના ક્ષેત્રમાં યુરોપના નેતાઓમાં Walliance, SIM અને પ્લેટફોર્મ, પૂર્ણ થવાની જાહેરાત કરે છે…
ફિલામેન્ટ એ "એક્સિલરેટેડ" લારેવેલ ડેવલપમેન્ટ ફ્રેમવર્ક છે, જે ઘણા ફુલ-સ્ટેક ઘટકો પ્રદાન કરે છે. તે પ્રક્રિયાને સરળ બનાવવા માટે રચાયેલ છે…
"મારે મારી ઉત્ક્રાંતિ પૂર્ણ કરવા માટે પાછા ફરવું પડશે: હું મારી જાતને કમ્પ્યુટરની અંદર રજૂ કરીશ અને શુદ્ધ ઊર્જા બનીશ. એકવાર સ્થાયી થયા પછી…
Google DeepMind તેના આર્ટિફિશિયલ ઇન્ટેલિજન્સ મોડલનું સુધારેલું સંસ્કરણ રજૂ કરી રહ્યું છે. નવું સુધારેલું મોડલ માત્ર…