إيجي تاج · اعرف. ناقش. جرّب. نفّذ.

الفرق بين Cookies و LocalStorage و IndexedDB في فصل الحسابات

شرح عملي للفروق بين أهم مخازن بيانات المتصفح، وكيف يؤثر كل واحد منها على فصل الحسابات ونقل الجلسات وتشخيص التسرب بين البروفايلات.

دليل عملي

شرح عملي للفروق بين أهم مخازن بيانات المتصفح، وكيف يؤثر كل واحد منها على فصل الحسابات ونقل الجلسات وتشخيص التسرب بين البروفايلات.

5خطوات
عمليالمستوى

عندما يقال إن بروفايلين «معزولان» لأن الكوكيز مختلفة، فهذه إجابة ناقصة. تطبيقات الويب الحديثة تخزن جزءًا من حالتها في Cookies، وجزءًا في LocalStorage، وبيانات أكبر أو أكثر تعقيدًا في IndexedDB. أحيانًا يبقى تسجيل الدخول داخل Cookie بينما يحتفظ التطبيق نفسه بإعدادات الحساب أو مفاتيح Offline داخل IndexedDB. لذلك أي نظام لإدارة حسابات متعددة يحتاج أن يفهم وظيفة كل مخزن بدل التعامل مع «بيانات الموقع» ككتلة واحدة.

Cookies: صغيرة لكنها مؤثرة في المصادقة

الكوكيز تُرسل عادة مع طلبات HTTP حسب Domain و Path و SameSite و Secure وغيرها. لهذا تُستخدم كثيرًا في Session IDs وتفضيلات الخادم. لو شارك بروفايلان نفس Cookie jar فقد يظهر الحساب نفسه فيهما حتى لو باقي التخزين منفصل. لكن العكس ليس مضمونًا: فصل الكوكيز لا يعني أن باقي الحالة منفصلة، لأن التطبيق قد يعيد بناء الجلسة أو التفضيلات من مخزن آخر.

LocalStorage: إعدادات سهلة القراءة وطويلة العمر

LocalStorage مساحة Key/Value مرتبطة بال Origin وتبقى بعد إغلاق التبويب والمتصفح. كثير من المواقع تستخدمها للاختيارات المحلية، معرفات مؤقتة، Flags، وأحيانًا Tokens. لأنها سهلة القراءة والكتابة من JavaScript، فهي أول مكان يجب فحصه عند رؤية سلوك مختلف بين بروفايلين رغم أن الكوكيز تبدو صحيحة. نقل LocalStorage يدويًا من بروفايل لآخر قد ينقل أكثر من مجرد تفضيلات.

خطوات عملية

  1. افتح DevTools لكل بروفايل على نفس ال ـOrigin.
  2. قارن أسماء المفاتيح وليس القيم فقط.
  3. حدد أي مفتاح يتغير بعد تسجيل الدخول أو تبديل الحساب.
  4. اختبر حذف مفتاح واحد لمعرفة أثره بدل مسح كل التخزين.
  5. سجل المفاتيح التي يجب ألا تنتقل عند نسخ البروفايل.

IndexedDB: قاعدة بيانات داخل المتصفح

IndexedDB مصممة لتخزين بيانات منظمة وكميات أكبر، وتستخدمها تطبيقات البريد والمراسلة والأدوات التعاونية بكثافة. قد تحتوي Cache محلية، Drafts، قوائم Offline، metadata، أو بيانات مزامنة. المشكلة أنها ليست واضحة مثل LocalStorage؛ قد تظل بيانات حساب قديم موجودة حتى بعد تسجيل الخروج إذا لم ينظفها التطبيق. في بيئة متعددة الحسابات، مشاركة نفس IndexedDB بين البروفايلات خطأ كبير حتى لو لم يؤدِ مباشرة إلى تسجيل دخول تلقائي.

قائمة مراجعة

  • كل بروفايل له IndexedDB مستقل لكل Origin.
  • اختبرت تسجيل الخروج ثم فحصت بقايا البيانات.
  • لا تعتمد على Clear Cookies لمسح قاعدة البيانات المحلية.
  • نقل البيانات يتم حسب الحاجة وليس بنسخ كل قواعد الموقع.

كيف تقرر ما الذي تنقله أو تعزله؟

اعتبر الجلسة ثلاث طبقات: مصادقة، حالة تطبيق، وبيانات محلية. Cookies غالبًا تقع في الأولى، LocalStorage في الثانية، و IndexedDB قد يمتد للثانية والثالثة. عند نقل بروفايل، ابدأ بأقل مجموعة بيانات تحقق الهدف. نسخ كل شيء قد ينقل أخطاء أو هوية قديمة، ونسخ الكوكيز وحدها قد ينتج جلسة ناقصة لأن التطبيق ينتظر بيانات محلية أخرى.

هل تريد الاحتفاظ بالمقال أو إعادة استخدامه؟
مجتمع إيجي تاجعن المجتمع

شارك في تقييم ونقاش المقال

رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.

تفاعل مع المقالاختر التفاعل المناسب، ويمكنك تغيير رأيك لاحقًا.
قيّم جودة المقاللا توجد تقييمات بعد — كن أول من يقيّم.

نقاش القراء

النقاش

جارٍ تحميل التعليقات…

بعد هذه المادة

تابع القراءة

من نفس القسم04
  1. 02
  2. 03
  3. 04
اختيار القراء

الأكثر قراءة

الترتيب الكامل
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
يتجدد مع النشر

أحدث المواد

  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06