هل الكوكيز سيء للتسجيل الدخول؟ سمعت ان التوكنز اكثر امان و افضل لكن الي شفته اثنينهم يشبهون بعض . اثنينهم ينتهي على المتصفح و اقدر احدد مدة الانتهاء و اثنينهم يقدر يعطي صلاحيات لكل مستخدم.
Cookies session او JWT tokens في asp net core
ساشرح لك ببساطه ما الاختلاف بينهم و مقارنه بينهم من حيث الاداء و الفاعليه و الاهم الامان مع مناقشة كيف يعملون
اولا نشرح ما هو Cookie Authentication
الكوكيز هي نوع من حافظة التاريخ. تستخدم تطبيقات الويب الكوكيز لتذكر المستخدم لزيارات مستقبلية بحيث لا يضطر المستخدم لإدخال اسم المستخدم وكلمة المرور في كل مرة يزور فيها الموقع.
الآن، السؤال هو، ما هي مصادقة الكوكيز؟ مصادقة الكوكيز هي رابط بين العميل والخادم. باستخدام بروتوكول HTTP اللاحالي، تستخدم الكوكيز HTTP لمصادقة طلبات العميل والحفاظ على بيانات الجلسة على الخادم.
في هذا النهج، يتلقى العميل كوكيزًا من الخادم، يتم حفظه في تخزين المتصفح المحلي. لتأكيد أن الطلبات تنتمي إلى نفس المستخدم والحفاظ على مصادقة المستخدم، سيقوم متصفح العميل بإرسال تلك الكوكيز مع كل طلب في التفاعلات المستقبلية مع الخادم.
كيف يعمل على مصادقة ملفات تعريف الارتباط (Working of Cookie Authentication)
الخطوة 1: في الخطوة الأولى، سيقوم العميل بإرسال طلب تسجيل الدخول إلى الخادم عن طريق تسجيل الدخول إلى التطبيق، كما هو موضح في الصورة.
الخطوة 2: الآن، سيتحقق الخادم من تفاصيل تسجيل الدخول، وإذا كانت متطابقة، فسيقوم بإنشاء جلسة في قاعدة البيانات. يمكنك رؤية هذا في الصورة .
الخطوة 3: بعد إنشاء الجلسة في قاعدة البيانات، سيعيد الخادم ملف تعريف ارتباط الجلسة (الذي يتم الاحتفاظ به فقط أثناء الجلسة الحالية) إلى العميل. بمعنى آخر، يستجيب الخادم للعميل عن طريق وضع ملف تعريف الارتباط في رأس Set-Cookie.
التطبيق، كما هو موضح في الصورة.
الخطوة 4: نظرًا لإرسال ملف تعريف الارتباط إلى العميل، فإن كل طلب من العميل يرسله إلى الخادم سيحتوي على ملف تعريف ارتباط. سيتحقق الخادم بعد ذلك مما إذا كانت هذه الطلبات جاءت من نفس المستخدم بمساعدة ملف تعريف الارتباط هذا. إذا تطابق الطلب مع ملف تعريف الارتباط الموجود في الخادم، فستتم مصادقة الطلب. وإلا سيتم رفض الطلب من قبل الخادم.
التطبيق، كما هو موضح في الصورة.
الخطوة 5: أخيرًا، عندما يقوم العميل بتسجيل الخروج من التطبيق، سيتم حذف جميع الجلسات التي تم إنشاؤها أثناء العملية من الخادم وقاعدة البيانات بالإضافة إلى ملفات تعريف الارتباط مصادقة الرمز المميز .
التطبيق، كما هو موضح في الصورة.
تحتاج مصادقة الرمز المميز إلى إعداد يدوي أكثر مقارنةً بمصادقة ملفات تعريف الارتباط. ولكنه يساعد أيضًا المستخدم على التغلب على عيوب النهج القائم على ملفات تعريف الارتباط.
في هذه الطريقة، يتلقى العميل/المتصفح رمزًا مميزًا مشفرًا من الخادم بعد التحقق من تفاصيل تسجيل دخول المستخدم. يمكن بعد ذلك إضافة هذا الرمز المشفر كرأس تفويض للطلبات المقدمة لاحقًا ويتم الاحتفاظ به بواسطة المتصفح.
كيف يعمل على المصادقة الرمزية (Working of Token Authentication)
الخطوة 1: الخطوة الأولى هي نفس مصادقة ملف تعريف الارتباط. سيقوم العميل بإرسال طلب تسجيل الدخول إلى الخادم عن طريق تسجيل الدخول إلى التطبيق.
الخطوة 2: في الخطوة التالية، سيقوم الخادم بالتحقق من صحة الطلب وإنشاء رمز مميز وتوقيعه وإرساله مرة أخرى إلى العميل.
الخطوة 3: الآن، سيقوم العميل بتخزين الرمز المميز وإرساله مرة أخرى مع الطلبات باستخدام Javascript إلى الخادم. إذا كان الرمز المميز مطابقًا لبيانات الخادم، فسيتم مصادقة الطلب وإلا سيتم رفضه.
الخطوة 4: في النهاية، سينقر العميل على زر تسجيل الخروج، ولكن يجب مسح الرمز المميز الموجود في موقع الويب يدويًا من وحدة التخزين. ستختفي جميع الجلسات الموجودة على الخادم أو قاعدة البيانات بعد ذلك.
بعد مناقشة كيف يعمل كلا منهم الان سنجري مقارنه علي اهم المواضبع بينهم
مقارنه بين Cookie و Token
الأمان:
الكوكيز: يمكن أن تكون غير آمنة إذا تم التعامل معها بشكل غير صحيح. يمكن أن يتم اختراق الكوكيز عن طريق التصيد الاحتيالي للكوكيز (Cookie Hijacking) أو التصيد الاحتيالي للجلسة (Session Hijacking).
JWT Tokens: تكون عادةً آمنة إذا تم استخدامها بشكل صحيح. تتضمن (Token) معلومات موقعة رقميًا، مما يجعل من الصعب التلاعب بها. ومع ذلك، يجب استخدام توقيع رقمي قوي وتجنب تخزين معلومات حساسة في الوثائق بنفسها.
الفعالية:
الكوكيز: يمكن استخدام الكوكيز لتخزين بيانات الجلسة والمعلومات الأخرى بشكل مباشر، مما يجعلها مفيدة لتطبيقات الويب التقليدية.
JWT Tokens: توفر JWT tokens طريقة موثوقة ومقاومة للتزوير لتمرير المعلومات بين العميل والخادم. يمكن استخدامها لتوفير الوصول المؤقت إلى الموارد دون الحاجة إلى استرداد البيانات في كل طلب.
الأداء:
الكوكيز: يتم إرسال الكوكيز مع كل طلب HTTP إلى الخادم، مما قد يزيد من حجم البيانات المرسلة عبر الشبكة ويؤثر على الأداء.
JWT Tokens: يمكن أن تكون أخف وزناً من الكوكيز، خاصة عند استخدام طرق التحقق مثل JSON Web Signatures (JWS) و JSON Web Encryption (JWE) بدلاً من الجلسات.
التعليقات