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

السلام عليكم

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

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

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

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

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

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

عند تسجيل الدخول يتم حفظ رمز فريد في الكوكيز، (هذا الرمز هو رقم الجلسة session على السيرفر) (وهذا الرمز الفريد هو فقط رقم عشوائي غير متكرر)

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

إذا سرق شخص آخر هذا الرمز فسيستطيع إنتحال شخصيتك بالنسبة للموقع

يمكن سرقة الكوكيز في حالتين

  1. إذا كان الموقع نفسه فيه ثغرة تسمح لشخص بتنفيذ كود javascript في متصفح شخص آخر، مثل هجمة xss
  2. إذا كان جهاز المستخدم فيه فيروس يستطيع سرقة الكوكيز أو إضافة غير موثوقة في المتصفح

لجعل هذا الرمز الفريد مرتبط جيدا بالمستخدم الأصلي وصعب الإستخدام في جهاز آخر

يمكن حفظ بلد المستخدم و ip و نسخة المتصفح و نوع الجهاز

وبالتالي عندما تتم سرقة الرمز سيصعب على السارق توفير جميع الشروط

ولكن بالنهاية تبقا المسؤولية على عاتق الموقع والمستخدم معا لتجنب سرقة هذا الرمز

بخصوص الحالتين هل يوجد ثالث لهما ؟ يعني عملية ان يكون شخص بمنتصف الاتصال هل يمكنه سرقة الكوكيز ؟

ومسألة حفظ بيانات إضافية لهذا الرمز الفريد اظن هي الحل الوحيد والممكن حالياً ولكن ربما يتغير ip العميل فلابد من معلومات لا يمكن تغيرها مع الوقت، البلد، نوع المتصفح ونوع الجهاز امثلة مفيده

ولكن يبقى السؤال كيف تؤمن الشركات حسابات مستخدميها ( هل بهذه الطريقة فقط ) ؟

إن كان الموقع يستخدم https فلا يمكن لشخص في منتصف الإتصال قراءة الكوكيز لأنها تكون مشفرة.

لا أعلم ما تفعل الشركات الكبرى

لكن مثلا نظام إدارة المحتوى ووردبريس المشهور الذي تستخدمه مجموعة كبيرة من المواقع

يعتمد فقط على الرمز الفريد دون إضافة معلومات أخرى إليه وهذا الرمز إسمه PHPSESSID

وهو الرمز الإفتراضي في php

لايتم حفظ معلوممات سرية في الكوكيز اساساً

وفي حال تم ذلك (مثل حفظ تسجيل الدخول) فيجب تشفيرها بطبيعة الحال ثم عندما يدخل العضو يتم اعادة فك التشفير من الموقع نفسه

كيف اتأكد ان الكوكيز وصلني من الشخص الصحيح وليس انتحال شخصية؟

لايمكنك ذلك

لهذا لايتم حفظ معلومات سرية في الكوكيز

مثلا عندما تدخل لمتجر وتضع اشياء في سلة المشتريات وتخرج (لست مسجل دخولك) يتم حفظها في الكوكيز

ثم عندما تعود للموقع تجدها لم تحذف لانه استرجعها من الكوكيز ! لماذا سيسرق شخص ما اشياء وضعتها في سلة مشترياتك اصلاً ؟ حتى لو تمت سرقتها فهي ليست مهمة ولاباس

كوكيز تسجيل الدخول للمستخدم هو المقصود بالموضوع

نعم لايمكنك التاكد

في الواقع حتى ان متصفح مثل ايدج يستطيع ان ياخذ معلومات تسجيل الدخول من كوكيز متصفح فايرفوكس او كروم

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

لذا هي ليست امنة اساساً

لكن تستطيع حفظ الIP في السيرفر واذا رايت اختلافا تمنعه من الدخول

او ترسل له تنبيه بالدخول على الايميل فلو ان هناك شخص اخر دخل سينتبه المستخدم ويقوم بتسجيل الخروج وما اشبه

في حال اتى من الغد وتم تغيير ip من مزود الخدمة !!! ما الحل في هذه الحالة ؟

المحير هو ما الطريقة المتبعة عند كبار المواقع ؟

موضوع الآي بي هو نفسه الذي اخبرتك به موجود في باقي المواقع

ستجد انه يطلب منك تسجيل الدخول مجددا لوجود اختلاف في الIP

بل واكثر من ذلك ان بعض المواقع (مثل قوقل) سوف تغلق حسابك حتى تعيد تأكيد الايميل اذا دخلت من IP دولة مختلفة

لو لديك حساب gmail موثوق وقديم، جرب تفعيل vpn ومحاولة تسجيل الدخول مرة اخرى وستصلك رسالة انه تم ايقاف حسابك حتى تعاود الدخول عليه والتاكد من صحة عملية الدخول

اما لو كان IP من نفس الدولة فسيرسل رسالة تنبيهية فقط وسيسمح لك بالدخول ويخبرك بأن هناك جهاز جديد قام بتسجيل الدخول

لذا وبالمختصر، نعم لو تغير الIP ستطلب منه تسجيل دخول من جديد

لكن هذا ظرف قليل الحدوث.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

موضوع حماية معلومات تسجيل الدخول موضوع كبير اخي الحبيب

وقد سبق ان قمت بعمل بحث عنه ولكن لم استوعبه بشكل كامل لذلك لايمكنني التعليق

استطيع ان اقول لك ان الشركات الكبرى (قوقل - تويتر) الخ تستخدم اطار عمل Open Authentication

اختصارا OAuth 2.0

وهناك طرق اخرى

  • Cookie-Based authentication
  • Token-Based authentication
  • Third party access(OAuth, API-token)
  • OpenId
  • SAML

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

وكذلك لو استخدمت احد هذه الطرق فيوجد الكثير من انواع تسجيل الدخول

  • Single-Factor/Primary Authentication.
  • Two-Factor Authentication (2FA)
  • Single Sign-On (SSO)
  • Multi-Factor Authentication (MFA)
  • Password Authentication Protocol (PAP)
  • Challenge Handshake Authentication Protocol (CHAP)
  • Extensible Authentication Protocol (EAP)

لمزيد من المعلومات راجع المقال

وخلال بحثي ايضا وجدت نظام جديد كليا مدعوم من شركات كبرى مثل قوقل و موزيلا وميكروسوفت يبدو انه سيكون الافضل WebAuthn

مراجعة المقال لمزيد من العلومات حول WebAuthn

الموضوع طويل والمعلومات كثيرة فياليت احد الكتاب التقنيين هنا يقوم بلم شمل هذه المعلومات وترجمتها

حتى يستفيد الجميع

عند تسجيل الدخول يتم حفظ رمز فريد في الكوكيز، (هذا الرمز هو رقم الجلسة session على السيرفر) (وهذا الرمز الفريد هو فقط رقم عشوائي غير متكرر)

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

إذا سرق شخص آخر هذا الرمز فسيستطيع إنتحال شخصيتك بالنسبة للموقع

يمكن سرقة الكوكيز في حالتين

إذا كان الموقع نفسه فيه ثغرة تسمح لشخص بتنفيذ كود javascript في متصفح شخص آخر، مثل هجمة xss

إذا كان جهاز المستخدم فيه فيروس يستطيع سرقة الكوكيز أو إضافة غير موثوقة في المتصفح

لجعل هذا الرمز الفريد مرتبط جيدا بالمستخدم الأصلي وصعب الإستخدام في جهاز آخر

يمكن حفظ بلد المستخدم و ip و نسخة المتصفح و نوع الجهاز

وبالتالي عندما تتم سرقة الرمز سيصعب على السارق توفير جميع الشروط

ولكن بالنهاية تبقا المسؤولية على عاتق الموقع والمستخدم معا لتجن ب سرقة هذا الرمز

موقع : سيزار للتقنية

www.sizar-tech.com

-1

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

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

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

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

-2

الأمر يا صديقي لا يقوم فقط على رغبة المنصات والمواقع بمختلف أنواعها على رغبتها في تأمين المعلومات والملفات الخاصة بالمستخدمين. أنا لستُ مختصًا في عمليات التأمين السيبراني بالطبع، لكنني قد عملت على كتابة أحد الموضوعات المتعلقة بأسباب تأمين بيانات المستخدمين عبر ووردبريس وغيره من المواقع، وقد أدركت من خلال عكليات البحث أن الأمر مرهون بالعديد من السياسات وشروط الأحكام التي تفرضها الجهات على تلك المواقع لحماية حقوق المستخدمين قدر الإمكان وتقوم بتجريم تداول تلك البيانات بشكل غير قانوني. ومن أمثلة تلك السياسات: مبادئ قانون حماية البيانات العامة لسكان الاتحاد الأوروبي (GDPR)، وقانون حماية حقوق المستهلك في ولاية كاليفورنيا (CCPA).

وات ار يو تو"ل"كنغ آباوت ؟