CSRF သည် ဝဘ်လုံခြုံရေးကို ထိခိုက်စေနိုင်သည့် အစစ်အမှန်အသုံးပြုသူကိုယ်စား လုပ်ဆောင်သည့် တိုက်ခိုက်သူမှ လုပ်ဆောင်သည့် အန္တရာယ်ရှိသော လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ကံကောင်းထောက်မစွာ၊ Laravel သည် ဤအားနည်းချက်အမျိုးအစားကို ကာကွယ်ရန် ကိရိယာများကို ပံ့ပိုးပေးသည်။
CSRF သည် အသုံးပြုသူ ဆက်ရှင်များကို ခိုးယူတိုက်ခိုက်သည်။ အသုံးပြုသူတစ်ဦးအား လျှို့ဝှက်ပုံစံတဂ်များ သို့မဟုတ် အန္တရာယ်ရှိသော URL များ (ပုံများ သို့မဟုတ် လင့်ခ်များ) မှတစ်ဆင့် တောင်းဆိုချက်တစ်ခုပေးပို့ရန် အသုံးပြုသူကို လှည့်ဖြားခြင်းဖြင့် ၎င်းကို လုပ်ဆောင်သည်။
ဤတိုက်ခိုက်မှုသည် အသုံးပြုသူ၏ စက်ရှင်အခြေအနေ၊ ဒေတာပေါက်ကြားမှုနှင့် တစ်ခါတစ်ရံတွင် ဟက်ကာများသည် အပလီကေးရှင်းတစ်ခုတွင် အသုံးပြုသူဒေတာကို ကြိုးကိုင်နိုင်သည်။
အထက်ပါပုံသည် ဝဘ်လုံခြုံရေးကို ချိုးဖောက်နေသည့် မြင်ကွင်းကို သရုပ်ဖော်သည်။ သားကောင်သည် လင့်ခ်တစ်ခုကို နှိပ်ခြင်းဖြင့် တောင်းဆိုချက် (လက်ခံရရှိသည်) သည် ဝဘ်ဆိုက်ဆာဗာအား ဝင်ရောက်အသုံးပြုရန်နှင့် ကြိုးကိုင်ခြယ်လှယ်ရန်အတွက် အသုံးဝင်သော အချက်အလက်များကို လက်ဝယ်ရရှိထားသည့် ဟက်ကာမှ အလိုရှိသော အကျိုးသက်ရောက်မှုများကို ဖြစ်ပေါ်စေမည့် ဝဘ်ဆိုက်ဆာဗာသို့ တောင်းဆိုချက်တစ်ခု ပေးပို့သည်။
တိုးတက်စေရန် လုံခွုံရေး သင်၏အပလီကေးရှင်းများ၏ဝဘ်၊ အသုံးပြုသူစက်ရှင်တစ်ခုစီတွင် Laravel သည် စစ်မှန်ကြောင်းသက်သေပြထားသောအသုံးပြုသူသည် အပလီကေးရှင်းကိုတောင်းဆိုသည့်သူဖြစ်ကြောင်းသေချာစေရန်အတွက် ၎င်းကိုအသုံးပြုသည့်လုံခြုံသောတိုကင်များကိုထုတ်ပေးပါသည်။
အသုံးပြုသူ စက်ရှင်တစ်ခုအား ပြန်လည်ထုတ်ပေးသည့်အခါတိုင်း ဤတိုကင်အပြောင်းအလဲကြောင့်၊ တိုက်ခိုက်သူသည် ၎င်းကို ဝင်ရောက်၍မရပါ။
ဆာဗာဘက်ခြမ်း (backend) တွင် အသုံးပြုသူအချက်အလက်ကို ပြောင်းလဲရန် တောင်းဆိုသည့်အခါတိုင်း POST
, PUT
, PATCH
e DELETE
ညွန်ကြားချက်တွင် ပါဝင်ရမည်။ @csrf
တောင်းဆိုမှုပုံစံတွင် blade
HTML ဟိ @csrf
ထို့ကြောင့် ညွှန်ကြားချက်တစ်ခုဖြစ်သည်။ Blade
အပလီကေးရှင်းမှ အတည်ပြုထားသော ဝှက်ထားသော တိုကင်တစ်ခုကို ထုတ်လုပ်ရန် အသုံးပြုသည်။
ညွှန်ကြားချက် Blade
Laravel template engine တွင်အသုံးပြုသော syntax ဖြစ်သည် ဓါးရွက် . ဖိုင်တစ်ခုဖန်တီးရန် blade
ကျွန်ုပ်တို့၏ အမှုပုံစံတွင် - ၎င်းကို ဓါး၏ တိုးချဲ့မှုဖြင့် နောက်တွင် သင်က နာမည်ပေးရပါမည်။ ဆိုလိုသည်မှာ ဖိုင်တွင် နာမည်ရှိမည်ဖြစ်သည်။ form.blade.php
.
ဖိုင်ကိုအသုံးပြုသည်။ blade
ဝဘ်စာမျက်နှာရှိ သုံးစွဲသူများအတွက် အမြင်များကို တင်ဆက်ရန်။ ကြိုတင်လမ်းညွှန်ချက်အချို့ ရှိပါသည်။definite သို့မဟုတ် blade shorthand syntax ကို သင်သုံးနိုင်သည်။ ဥပမာအားဖြင့်, @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
APIs များနှင့်မသက်ဆိုင်ဘဲ ဝဘ်အတွင်း တောင်းဆိုမှုများအတွက် အစပျိုးထားသည်။
protected $middlewareGroups = [
'web' => [
.
.
.
.
.
\App\Http\Middleware\VerifyCsrfToken::class,
],
];
VerifyCsrfToken အလယ်တန်းဆော့ဖ်ဝဲသည် အတန်းကို တိုးချဲ့သည်။ Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
ဆိုလိုသည်မှာ CSRF အတည်ပြုခြင်းဖြစ်ပါသည်။ defiအတန်းထဲမှာ ည။
Laravel သည် CSRF အတည်ပြုခြင်းကို မည်သို့ကိုင်တွယ်သည်ကို ရှာဖွေရန် ပိုမိုနက်ရှိုင်းစွာ စူးစမ်းကြည့်ကြပါစို့။
အတန်းထဲမှာ ကျွန်တော်တို့မှာ function တွေရှိတယ်။ tokensMatch
.
protected function tokensMatch($request)
{
$token = $this->getTokenFromRequest($request);
return is_string($request->session()->token()) &&
is_string($token) &&
hash_equals($request->session()->token(), $token);
}
ကုဒ်တွင် session နှင့် input CSRF တိုကင်များ ကိုက်ညီမှုရှိမရှိ ဆုံးဖြတ်သည်။
Function သည် အရာနှစ်ခုကို လုပ်ဆောင်သည်။
$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
string နှစ်ခုလုံး တူညီပါက နှိုင်းယှဉ်ရန် PHP တွင် တည်ဆောက်ထားသည်။ ဒီလုပ်ဆောင်ချက်ရဲ့ ရလဒ်က အမြဲတမ်းပါပဲ။ bool (အမှန်) သို့မဟုတ် (false) .
Ercole Palmeri
ဆေးရောင်ခြယ်ခြင်းမှတစ်ဆင့် ကောင်းမွန်သော မော်တာစွမ်းရည်ကို ပြုစုပျိုးထောင်ခြင်းသည် ကလေးများကို စာရေးခြင်းကဲ့သို့ ပိုမိုရှုပ်ထွေးသောစွမ်းရည်များအတွက် ပြင်ဆင်ပေးသည်။ အရောင်ခြယ်ရန်…
ရေတပ်ကဏ္ဍသည် ကမ္ဘာလုံးဆိုင်ရာ စီးပွားရေးအင်အားကြီးဖြစ်ပြီး၊ ဘီလီယံ ၁၅၀ ရှိသော စျေးကွက်ဆီသို့ လျှောက်လှမ်းနေသော...
ပြီးခဲ့သည့်တနင်္လာနေ့တွင် Financial Times သည် OpenAI နှင့်သဘောတူညီချက်တစ်ခုကြေငြာခဲ့သည်။ FT သည် ၎င်း၏ ကမ္ဘာ့အဆင့်မီ သတင်းစာပညာကို လိုင်စင်ထုတ်ပေးသည်...
သန်းပေါင်းများစွာသောလူများသည် streaming ဝန်ဆောင်မှုများအတွက်ပေးဆောင်ပြီးလစဉ်စာရင်းသွင်းမှုအခကြေးငွေပေးဆောင်သည်။ အများအမြင်မှာ သင်...