ایک آتھ (Authentication) کی کہانی
مجھے سسٹم ڈیزائن سے محبت ہے۔ مجھے ان چھوٹے فیصلوں کے بارے میں سوچنا پسند ہے جو سافٹ ویئر کو صارفین کے لیے بہترین بناتے ہیں۔
ایک انجینئر کے طور پر، میں سیکیورٹی کا خیال رکھتا ہوں۔ اگر سافٹ ویئر غیر محفوظ ہو یا حملوں کی وجہ سے مالی نقصان کا شکار ہو جائے تو وہ بیکار ہے۔ میں ایسے پروڈکٹس بنانا چاہتا ہوں جو ہر بار درست طریقے سے کام کریں۔
میں نے حال ہی میں ایک AI اسٹارٹ اپ کے لیے آتھ (authentication) پر کام کیا۔ میں نے فرنٹ اینڈ کے لیے Next.js کا استعمال کیا۔ Next.js چھوٹی ٹیموں کے لیے بہترین ہے کیونکہ یہ فرنٹ اینڈ اور بیک اینڈ کو ایک ہی کوڈ بیس میں یکجا کر دیتا ہے۔
اس پروجیکٹ کے دوران، میری توجہ اس بات پر تھی کہ براؤزر میں آتھ ٹوکنز (authentication tokens) کو کیسے محفوظ کیا جائے اور ان کی حفاظت کیسے کی جائے۔ اس کا حل کوکیز (cookies) ہیں، خاص طور پر HttpOnly کوکیز۔
Local Storage کے بجائے کوکیز کا استعمال کیوں کیا جائے؟
Local Storage استعمال کرنے میں آسان ہے، لیکن اس میں ایک خطرہ ہے۔ JavaScript اسے پڑھ سکتا ہے۔ یہ اسے کراس سائٹ اسکرپٹنگ (XSS) حملوں کے لیے حساس بنا دیتا ہے۔ اگر آپ کی سائٹ پر کوئی بدنیتی پر مبنی اسکرپٹ چلتی ہے، تو وہ آپ کے صارف کا ٹوکن چوری کر سکتی ہے۔
کوکیز اس مسئلے کو حل کرتی ہیں۔ آپ کوکی میں ایک HttpOnly فلیگ (flag) شامل کر سکتے ہیں۔ یہ براؤزر کو بتاتا ہے: "اس کوکی کو صرف HTTP درخواستوں کے ذریعے بھیجیں۔ JavaScript کو اسے چھونے نہ دیں۔"
اگر کوئی حملہ آور JavaScript کا استعمال کرتے ہوئے کوکی پڑھنے کی کوشش کرتا ہے، تو اسے کچھ نظر نہیں آتا۔ کوکی ان کے لیے غیر مرئی رہتی ہے، لیکن براؤزر اسے خود بخود آپ کے سرور پر بھیج دیتا ہے۔
کوکیز کو مزید محفوظ بنانے کے لیے، میں دو دیگر فلیگز استعمال کرتا ہوں:
• Secure: یہ اس بات کو یقینی بناتا ہے کہ کوکی صرف HTTPS پر منتقل ہو۔ • SameSite=Lax: یہ کراس سائٹ ریکوسٹ فورجری (CSRF) حملوں کو روکنے میں مدد کرتا ہے۔
میں نے اسے Next.js کے ساتھ کیسے نافذ کیا:
میں اپنے بیک اینڈ (FastAPI) کو براؤزر سے چھپا کر رکھنا چاہتا تھا۔ میں نے سرور-ٹو-سرور سیٹ اپ بنانے کے لیے Next.js کو بطور پراکسی (proxy) استعمال کیا۔
- صارف Next.js Server Action کے ذریعے لاگ ان کرتا ہے۔
- Server Action، FastAPI کو کریڈنشلز (credentials) بھیجتا ہے۔
- FastAPI، Next.js سرور کو ایک ٹوکن واپس کرتا ہے۔
- Next.js سرور اس ٹوکن کو ایک HttpOnly کوکی میں لکھ دیتا ہے۔
- براؤزر کوکی کو اسٹور کرتا ہے لیکن اسے پڑھ نہیں سکتا۔
جب صارف کو ڈیٹا کی ضرورت ہوتی ہے، تو Next.js سرور کوکی کو پڑھتا ہے اور ان کے لیے بیک اینڈ سے بات کرتا ہے۔ حساس ٹوکن کبھی بھی براؤزر کے JavaScript ماحول کو نہیں چھوتا۔
یہ سیٹ اپ میرے بیک اینڈ کو الگ رکھتا ہے اور میرے صارفین کو زیادہ محفوظ بناتا ہے۔
آپ اپنے Next.js پروجیکٹس میں آتھ (authentication) کو کیسے ہینڈل کرتے ہیں؟ مجھے آپ کے طریقہ کار کے بارے میں جان کر خوشی ہوگی۔
