هل الكوكيز سيء للتسجيل الدخول؟ سمعت ان التوكنز اكثر امان و افضل لكن الي شفته اثنينهم يشبهون بعض . اثنينهم ينتهي على المتصفح و اقدر احدد مدة الانتهاء و اثنينهم يقدر يعطي صلاحيات لكل مستخدم.
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) بدلاً من الجلسات.
بشكل مختصر تعتبر ال Cookies :سهلة الاستخدام و مدعومة من جميع المتصفحات ولا تتطلب أي مكتبات خارجية.
ولكنها عرضة للإختراق من خلال هجمات XSS و CSRF.
أما بالنسبة لل JWT فهي أكثر أمانًا وقابلة للتطوير و الاستخدام مع تطبيقات SPA.
ولكن في مقابل ذلكأكثر تعقيدًا في الاستخدام وتتطلب مكتبات خارجية.
ويجب التذكير أن ال Cookies مع HttpOnly و SameSite أكثر أمانًا.
بخصوص الكوكيز والتوكنز لتسجيل الدخول فكلاهما ملفات نصية يتم تخزينها على متصفح المستخدم، وبالإمكان استخدام كليهما للتحقق من هوية المستخدم ومنحه صلاحيات محددة وتعيين مدة صلاحية لكل منهما.
ومن حيث الإختلاف، فالكوكيز يتم تخزينها على متصفح المستخدم، بينما التوكنز نستطيع تخزينها على متصفح المستخدم أو على خادم التطبيقات.
والكوكيز قابلة للإختراق بسهولة نسبية أما التوكنز أكثر أمانًا من الكوكيز، خاصةً إذا تم تخزينها على خادم التطبيقات.
والكوكيز تُستخدم بشكل أساسي لتتبع سلوك المستخدم وتذكر تفضيلاته، أما التوكنز تُستخدم بشكل أساسي للتحقق من هوية المستخدم ومنحه صلاحيات محددة.
وبالتالي الكوكيز يتم استخدامها من قبل جهات خارجية لتتبع المستخدم عبر مواقع الويب المختلفة، بينما التوكنز لا يمكن استخدامها من قبل جهات خارجية لتتبع المستخدم، مما يعني أن الكوكيز ليست آمنة مثل التوكنز، ولكنها أكثر ملاءمة لبعض التطبيقات، أما التوكنز أكثر أمانًا من الكوكيز، ولكنها أكثر تعقيدًا في التنفيذ.
لذا بالطبع الكوكيز نظام سيئ لتسجيل الدخول إذا كانت الأمان هو الشغل الشاغل لديك.
في البداية دعني اوضح لك معنى الكوكيز والتوكينز ثم اعطيك الفروقات بينهم
الكوكيز (ملفات تعريف الارتباط): من اسمها يدل على انها وسيط لتعريف وعمل ربط بين شيئين ولكم ماهم ؟ دعني اشرح لك
ببساطة هي ملفات نصية تحتوي على كميات صغيرة من المعلومات التي يتم إرسالها إلى المتصفح الخاص بك وتخزينها على جهاز الكمبيوتر الخاص بك أو الهاتف المحمول أو جهاز آخر عند زيارة موقع على شبكة الانترنت. ترسل ملفات تعريف الارتباط المعلومات مرة أخرى إلى موقع الالكتروني الأصلي أو موقع الكتروني آخر يتعرف على ملف تعريف الارتباط.
وتتم عملية تسجيل الدخول بها عن طريق ارسال ملفات الكوكيز الى الخادم مع كل طلب http
التوكينز(Json Web Token ):
هي طريقة امنة وفعالة لتمرير معلومات المصادقة بين العميل والخادم حيث انها تعمل كالتالي :
عند تسجيل في احد تطبيقات الويب او غيرها يتم توليد رمز يدعى توكينز بناءا على مفتاح سري ولا يستطيع لاحد الاطلاع عليها باستثناء الخادم و بعد توليد ذلك الرمز يتم إرساله للواجهة الأمامية للتطبيق ويتم تخزينه في جهاز المستخدم ومن ثم يتم ارساله في طلب http ويتم التحقق منه عن طريق المفتاح السري الذي قلنا انه مخزن في الخادم
اذا فأنهم يشبهون بعضهم الى حد كبير ولكنهم ليسو مثل بعضهم تماما
وكما ذكرنا ان الكوكيز يمكننا الوصول اليه من الموقع الاصلي او من مواقع الكترونية اخرى اما التوكينز فهو لا يتم الوصول اليه الا من خلال الخادم لذلك فهو اكثر امانا بالنسبة لتسجيل الدخول مقارنة بالكوكيز
التعليقات