كيف تؤمن المواقع ملفات الكوكيز ؟ طلب للنقاش

السلام عليكم

من المعلومات ان يتم ارسال ملف كوكيز مع عملية تسجيل دخول المستخدم للموقع

ويتم حفظ هذه المعلومة بالمتصفح، في هذه الحالة هل تكون بيانات المستخدم في مأمن من السرقة ؟

بالطبع كما يقول الكثيرون لا.

فيأتي السؤال كيف يمكن حفظ هذه البيانات بحيث لو حصل احد على ملف الكوكيز لا يمكنه طلب بيانات المستخدم ؟

ماهي الطرق المستخدمة لدى المواقع الان لتأمين البيانات من السرقة، على سبيل المثال حسوب هنا.


بحسب خبرتي وتجربتي من الصعب أحياناً حماية هذه الملفات لأنها حرفياً هي ملفات تعريف الإرتباط .. ولكن يمكن دمج تقنيات أخرى من أجل منع إعادة استخدام هذه الملفات خارج متصفح المستخدم إذا سرقت.

في البداية الحماية تبدأ بمنع الوصول إلى هذه الملفات من خلال الـ JavaScript لأنه في حال وجود ثغرة مثل XSS يمكن للمخترق سرقة هذه الكوكيز عن بعد ولذلك يجب حمايتها من خلال خيار HTTP ONLY وغيرها من الخيارات.

بعد ذلك، لنفترض أن المخترق بطريقة ما سرق هذه الملفات، كيف نمنع استخدامها خارج متصف المستخدم؟

إحدى الطرق هي ربط هي الكوكيز بنوع متصفح المستخدم مثلاً Chrome ونوع جهازه مثلاً Windows .. وبذلك إذا حاول المخترق الدخول إلى الحساب من خلال متصفح Firefox ولو ان نظام تشغيله Windows لن تعمل الكوكيز بل يمكن عمل Block مباشر لـ IP هذا الشخص مباشرة.

هذه الطريقة ليست فعالة كثيراً لأن المخترق قد يستخدم نفس المتصفح ونظام التشغيل وعليه يجب القيام بأكثر من ذلك.

إحدى الطرق الحديثة التي فكرت بها هي ربط الكوكيز ببصمة المتصفح عند تسجيل الدخول .. بصمة المتصفح يمكن أخذها من خلال العديد من المكتبات والتي لا تتغير عند حذف Data المتصفح ونسبة نجاحها أكثر من 95% أي أنه يمكن الاعتماد عليها كخط دفاع أول أي في حال سرق المخترق الكوكيز لن يستطيع الدخول إلى الحساب لأنه لا يملك بصمة المتصفح الفريدة التي تم تسجيل الدخول من خلاله. ويمكن أيضاً تسجيل بصمة المخترق الخاطئة في Log لكي يتم حظره من الموقع بأكمله بالإضافة إلى عنوان الـ IP الخاص به وغيرها.

مشكلة هذه الطريقة الوحيدة هي أنها قد تعتبر انتهاكاً لخصوصية المستخدم نوعاً ما كما أن بعض المتصفحات قد تقوم بتعطيل هذه الخاصية وبالتالي قد يواجه المستخدم مشاكل عند تسجيل الدخول ولكن بحسب ما أعرفه فالعديد من الشركات خاصة المالية منها تستخدم هذه الطرق مجتمعة لمنع سرق الحسابات بشكل فعّال.

ممتاز كلام جميل

طيب في حالة موقع حسوب هنا يوجد كوكيز كلما يتم النقر على على رابط يتم تجديده ( لماذا تتم هذه الطريقة؟ )

علماً ان الطلب لا يحتوي إلا على ملفات الكوكيز فقط

ما الفكرة من هذه الطريقة ؟

لم أفهم قصدك أخي هل يمكنك تحديد اسم هذا الطلب أو إلى أي رابط Endpoint يرسل؟

إذا كنت تقصد أن الكوكيز ترسل مع كل رابط أو طلب فذلك لأن الكوكيز يجب أن يتم ارسالها مع كل request ومن بينها الروابط لأنها الطريقة الوحيدة للموقع لمعرفة أنني ما زلت مسجل دخولي .. لذلك هي ترسل تلقائياً ويتم التأكد منها كل مرة في قاعدة بيانات الموقع.

احد هذه الكوكيز يتم تحديثه مع كل نقره

حتى في حال لم يتم النقر على الروابط يتم تحديثه كل بضع ثواني ؟

وجدت هذا الشيء حتى بموقع جوجل وغيرها من المواقع الكبيرة

أعتقد أنها تستخدم متتبع خطوات المستخدم .. على ماذا ضغط و كيف تحرك المؤشر والمدة قبل الضغط وذلك لتحليلها .. أيضاً في حسوب يوجد account_stats.json وهو لمعرفة أن المستخدم مازال نشطاً والمدة التي يقضيها في كل صفحة وأيضاً من أجل تحليلها

مثلاً إذا تم تسجيل أنني آخر مرة كنت في الموقع أو الصفحة الساعة 3:00 .. إذا لم يتم تحديث هذه الساعة خلال 5 ثوان سيعتبر الموقع أنني خرجت من الموقع لأنه لم يتلقى request لتجديد الساعة