CSRF በአጥቂ የሚሰራ ተንኮል አዘል ተግባር ነው፣ እሱም የተረጋገጠ ተጠቃሚን ወክሎ የድር ደህንነትን የሚጎዳ እርምጃዎችን የሚፈጽም ነው። እንደ እድል ሆኖ, ላራቬል የዚህ አይነት ተጋላጭነትን ለመከላከል መሳሪያዎችን ያቀርባል.
CSRF የተጠቃሚ ክፍለ-ጊዜዎችን ያጠቃል። ይህን የሚያደርጉት ተጠቃሚው ሳያውቅ በድብቅ ቅጽ መለያዎች ወይም ተንኮል አዘል ዩአርኤሎች (ምስሎች ወይም ማገናኛዎች) ጥያቄ እንዲያቀርብ ተጠቃሚን በማታለል ነው።
ይህ ጥቃት በተጠቃሚ ክፍለ-ጊዜ ሁኔታ ላይ ለውጥን ያመጣል, የውሂብ ፍንጣቂዎች እና አንዳንድ ጊዜ ጠላፊዎች በመተግበሪያ ውስጥ የዋና ተጠቃሚ ውሂብን ሊቆጣጠሩ ይችላሉ.
ከላይ ያለው ምስል የድር ደህንነት የሚጣስበትን ሁኔታ ያሳያል። ተጎጂው ሊንክ ላይ ጠቅ በማድረግ (ተቀባይነት ያለው) ጥያቄን ወደ ድህረ ገጽ አገልጋይ በመላክ ጠላፊው የሚፈልገውን ውጤት ያስገኛል፣ እሱም የድረ-ገፁን አገልጋይ ለማግኘት እና ለመቆጣጠር ጠቃሚ መረጃዎችን ይዞ ይመጣል።
ለማሻሻል መያዣ የመተግበሪያዎችዎ ድር፣ በእያንዳንዱ የተጠቃሚ ክፍለ ጊዜ፣ ላራቬል ደህንነቱ የተጠበቀ ቶከኖችን ያመነጫል ይህም የተረጋገጠ ተጠቃሚ መተግበሪያውን የሚጠይቅ መሆኑን ለማረጋገጥ ነው።
ምክንያቱም ይህ ማስመሰያ የተጠቃሚ ክፍለ ጊዜ በታደሰ ቁጥር ስለሚቀየር አጥቂ ሊደርሰው አይችልም።
የተጠቃሚ መረጃን በአገልጋይ በኩል ለመለወጥ ጥያቄ በሚቀርብበት ጊዜ (የጀርባ ጀርባ) እንደ POST
, PUT
, PATCH
e DELETE
, መመሪያውን ማካተት አለብዎት @csrf
በጥያቄው ቅጽ blade
HTML የ @csrf
ስለዚህ መመሪያ ነው Blade
በመተግበሪያው የተረጋገጠ የተደበቀ ማስመሰያ ለመፍጠር ጥቅም ላይ ይውላል።
መመሪያው Blade
በLaravel አብነት ሞተር ውስጥ ጥቅም ላይ የዋለው አገባብ ነው። ስለት . ፋይል ለመፍጠር blade
ስም መስጠት አለብህ - በእኛ ሁኔታ ቅፅ - ከዚያም የቢላውን ማራዘሚያ ተከትሎ. ይህ ማለት ፋይሉ ስሙ ይኖረዋል ማለት ነው። form.blade.php
.
ፋይሉ ጥቅም ላይ ይውላል blade
በድረ-ገጹ ላይ ለተጠቃሚዎች እይታዎችን ለማቅረብ ሁለት ቅድመ-መመሪያዎች አሉ።defiሊጠቀሙበት የሚችሉት nite ወይም blade shorthand አገባብ። ለምሳሌ, @if
ሁኔታው መሟላቱን ያረጋግጡ ፣ @empty
መዝገቦቹ ባዶ ካልሆኑ ያረጋግጡ ፣ @auth
ተጠቃሚው የተረጋገጠ ከሆነ እና ወዘተ.
ግን ወደ መመሪያው እንመለስ @csrf
. እንዴት እንደሚጠቀሙበት እነሆ፡-
<form method="POST" action="{{route('pay')}}">
@csrf
</form>
የላራቬል የቀድሞ ስሪቶች የተለየ ቅንብር ነበራቸው፡ ሁለቱም ይሠራሉ እና አንድ አይነት ነገር ያደርጋሉ።
<form method="POST" action="{{route('pay')}}">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>
የCSRF ቶከን ከሚቀርበው የቅፅ ጥያቄ ሲጠፋ ወይም ልክ ያልሆነ ሆኖ ከተገኘ ላራቬል የ 419 ሁኔታ ኮድ ያለው "ገጽ ጊዜው ያለፈበት" የስህተት መልእክት ይጥላል።
መካከለኛው ዕቃ VerifyCsrfToken
በLaravel መተግበሪያ ውስጥ የCSRF ማረጋገጫን ይቆጣጠራል። የ middleware
ውስጥ ተመዝግቧል Kernel.php
እና በማውጫው ውስጥ ይገኛል app/Http/Middleware
. ይህ ማለት የ middleware
ከኤፒአይዎች ጋር ያልተዛመደ በድር ውስጥ ላሉ ጥያቄዎች የተቀሰቀሰ ነው።
protected $middlewareGroups = [
'web' => [
.
.
.
.
.
\App\Http\Middleware\VerifyCsrfToken::class,
],
];
የVerifyCsrfToken መካከለኛ ዌር ክፍሉን ያራዝመዋል Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
፣ ማለትም የCSRF ማረጋገጫ ነው። defiበክፍል ውስጥ nite.
ላራቬል የ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
Coveware by Veeam የሳይበር ዘረፋ የአደጋ ምላሽ አገልግሎቶችን መስጠቱን ይቀጥላል። Coveware የፎረንሲክስ እና የማገገሚያ ችሎታዎችን ያቀርባል…
የመተንበይ ጥገና የዘይት እና ጋዝ ዘርፉን አብዮት እያደረገ ነው፣ ለዕፅዋት አስተዳደር ፈጠራ እና ንቁ አቀራረብ።…
የዩኬ ሲኤምኤ ስለ ቢግ ቴክ ባህሪ በአርቴፊሻል ኢንተለጀንስ ገበያ ላይ ማስጠንቀቂያ ሰጥቷል። እዚያ…
የሕንፃዎችን ኢነርጂ ውጤታማነት ለማሳደግ በአውሮፓ ህብረት የተቀረፀው የ"ኬዝ አረንጓዴ" ድንጋጌ የህግ አውጭ ሂደቱን በ…