مضامین

لاریول ویب سیکیورٹی: کراس سائٹ ریکوسٹ فورجری (CSRF) کیا ہے؟

اس لاریول ٹیوٹوریل میں ہم ویب سیکیورٹی کے بارے میں بات کرتے ہیں اور ویب ایپلیکیشن کو کراس سائٹ ریکوسٹ فورجری یا CSRF حملوں سے کیسے بچایا جائے۔

CSRF ایک بدنیتی پر مبنی سرگرمی ہے جو ایک حملہ آور کی طرف سے کی جاتی ہے، جو ایک مستند صارف کی جانب سے کارروائیاں کرتا ہے، جو ویب سیکیورٹی کے لیے نقصان دہ ہے۔ خوش قسمتی سے، Laravel اس قسم کے خطرے کو روکنے کے لیے آلات فراہم کرتا ہے۔

CSRF کیا ہے؟

سی ایس آر ایف کا حملہ یوزر سیشن کو ہائی جیک کرتا ہے۔ وہ صارف کی معلومات کے بغیر چھپے ہوئے فارم ٹیگز یا بدنیتی پر مبنی یو آر ایل (تصاویر یا لنکس) کے ذریعے درخواست جمع کرانے کے لیے صارف کو دھوکہ دے کر ایسا کرتے ہیں۔

یہ حملہ صارف کے سیشن کی حالت میں تبدیلی کا باعث بنتا ہے، ڈیٹا لیک ہو جاتا ہے اور بعض اوقات ہیکرز کسی ایپلیکیشن میں صارف کے آخری ڈیٹا میں ہیرا پھیری کر سکتے ہیں۔

اوپر کی تصویر ایک ایسے منظر نامے کی وضاحت کرتی ہے جہاں ویب سیکیورٹی کی خلاف ورزی ہوتی ہے۔ متاثرہ شخص ایک لنک پر کلک کرکے درخواست بھیجتا ہے (وصول شدہ)، ویب سائٹ کے سرور کو درخواست بھیجتا ہے جس سے ہیکر کے مطلوبہ اثرات مرتب ہوں گے، جو ویب سائٹ سرور تک رسائی اور ہیرا پھیری کے لیے مفید معلومات کے قبضے میں آجاتا ہے۔

CSRF کی درخواستوں کو کیسے روکا جائے۔

کو بہتر بنانے کے لیے سیکورٹی آپ کی ایپلی کیشنز کے ویب پر، ہر صارف سیشن میں، Laravel محفوظ ٹوکنز تیار کرتا ہے جسے وہ اس بات کو یقینی بنانے کے لیے استعمال کرتا ہے کہ تصدیق شدہ صارف وہی ہے جو درخواست کی درخواست کرتا ہے۔

چونکہ یہ ٹوکن ہر بار صارف کے سیشن کو دوبارہ تخلیق کرنے پر تبدیل ہوتا ہے، حملہ آور اس تک رسائی حاصل نہیں کر سکتا۔

جب بھی سرور سائڈ (بیک اینڈ) جیسے صارف کی معلومات کو تبدیل کرنے کی درخواست ہوتی ہے۔ POSTPUTPATCHDELETE، آپ کو ہدایت شامل کرنا ضروری ہے۔ @csrf درخواست فارم میں blade ایچ ٹی ایم ایل دی @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 اسٹیٹس کوڈ کے ساتھ "صفحہ کی میعاد ختم" غلطی کا پیغام پھینکتا ہے۔

CSRF کی توثیق کیسے اور کہاں ہوتی ہے۔

مڈل ویئر 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 تصدیق کو ہینڈل کرتا ہے۔

کلاس کے اندر، ہمارے پاس فنکشن ہے۔ 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 اگر دونوں تار برابر ہیں تو موازنہ کرنے کے لیے پی ایچ پی میں بنایا گیا ہے۔ اس آپریشن کا نتیجہ ہمیشہ ہوتا ہے۔ bool (سچ) یا (غلط) .

Ercole Palmeri

انوویشن نیوز لیٹر
جدت پر سب سے اہم خبروں کو مت چھوڑیں۔ ای میل کے ذریعے انہیں وصول کرنے کے لیے سائن اپ کریں۔

حالیہ مضامین

Veeam ransomware کے لیے تحفظ سے لے کر ردعمل اور بازیابی تک سب سے زیادہ جامع تعاون فراہم کرتا ہے۔

Veeam کی طرف سے Coveware سائبر بھتہ خوری کے واقعات کے ردعمل کی خدمات فراہم کرتا رہے گا۔ Coveware فرانزک اور تدارک کی صلاحیتیں پیش کرے گا…

اپریل 23 2024

سبز اور ڈیجیٹل انقلاب: کس طرح پیشین گوئی کی دیکھ بھال تیل اور گیس کی صنعت کو تبدیل کر رہی ہے

پیشن گوئی کی دیکھ بھال تیل اور گیس کے شعبے میں انقلاب برپا کر رہی ہے، پلانٹ کے انتظام کے لیے ایک جدید اور فعال نقطہ نظر کے ساتھ۔

اپریل 22 2024

UK کے عدم اعتماد کے ریگولیٹر نے GenAI پر BigTech کا الارم بڑھا دیا۔

UK CMA نے مصنوعی ذہانت کے بازار میں بگ ٹیک کے رویے کے بارے میں ایک انتباہ جاری کیا ہے۔ وہاں…

اپریل 18 2024

کاسا گرین: اٹلی میں پائیدار مستقبل کے لیے توانائی کا انقلاب

عمارتوں کی توانائی کی کارکردگی کو بڑھانے کے لیے یورپی یونین کی طرف سے تیار کردہ "گرین ہاؤسز" فرمان نے اپنے قانون سازی کے عمل کو اس کے ساتھ ختم کیا ہے…

اپریل 18 2024

اپنی زبان میں انوویشن پڑھیں

انوویشن نیوز لیٹر
جدت پر سب سے اہم خبروں کو مت چھوڑیں۔ ای میل کے ذریعے انہیں وصول کرنے کے لیے سائن اپ کریں۔

ہمارے ساتھ چلیے