حماية المتصفح والمستخدم من الهجمات
سيناريو شرير
ممكن تتخيل مبرمج شرير بيحاول يستغل موقعه للحصول على بيانات المستخدم من خلال المتصفح، واستغلال الكوكيز الخاصة بالمواقع الأخرى مثل موقع البنك أو الجيميل عن طريق AJAX لعمل طلبات وكأنه المستخدم. لكن في الواقع، حماية المتصفح من خلال SOP (Same-Origin Policy) و CORS (Cross-Origin Resource Sharing) تمنع هذا النوع من الهجمات.
ما هو SOP؟ (Same-Origin Policy)
SOP بيوفر حماية أساسية بمنع المواقع من قراءة بيانات من دومين آخر إلا لو الاتنين من نفس الأصل (الدومين، البروتوكول، والبورت). يعني موقعك الشرير مش هيقدر يقرأ كوكيز الجيميل إلا لو كان هو الجيميل نفسه.
ما هو CORS (Cross-Origin Resource Sharing)
CORS بيعمل كاستثناء لـ SOP، بيسمح لبعض المواقع تبادل بيانات بشروط معينة لو كان هناك إعدادات محددة للسماح بذلك.
الهجمات الشائعة
واحدة واحدة بقي ، السيناريو اللي إنت كنت عاوز تعمله دا كمبرمج مش لذوذ إسمه CSRF
CSRF (Cross-Site Request Forgery)
الهجوم ده بيحصل لما موقع ضار يستغل الثقة اللي المستخدم عنده في موقع معين، وبيحاول استخدام الكوكيز الخاصة به لعمل عمليات ضارة مثل تحويل الأموال.
يعني إيه يعني بستغل الثقة بتاعة حازم فيا كموقع وأستخدم الكوكيز الخاصة بيه لعمل تحويل مالي من حسابه لحسابي .. العملية مش سهلة كدا ي نجم أولا ف أدوات حماية مختلفة نبدأ ب
طبقات الحماية المختلفة
SOP (Same-Origin Policy)
- SOP بيمنع المواقع الضارة من الوصول إلى الكوكيز أو البيانات الخاصة بالمستخدم على دومين آخر.
ودي زي م قلتلك مش هيسمح لأي سكريبتات على “example.com” إنها تقرأ البيانات بتاعتك من “anotherdomain.com” أو تبعت ريكوستات له يعني من الأخر بيضمن أن المواقع الضارة مش قادرة على الوصول إلى الكوكيز أو الموارد من دومين تاني بدون إذن. تاني حاجة
HttpOnly Attribute
- الكوكيز اللي عليها HttpOnly مش بيقدر JavaScript يوصلها، وده بيحميها من هجمات XSS (Cross-Site Scripting).
ودي ببساطة خاصية بتضاف للكوكيز بتخليها مش accesible من ال JavaScript. لما الكوكيز تكون عليها HttpOnly، مش ممكن للسكريبتات اللي على المتصفح قراءة الكوكيز دي، وده بيحميها من هجمات
SameSite Attribute
هو خاصية تانية في الكوكيز بتحدد مدى مرونة إرسال الكوكيز بين المواقع. فيه ثلاث قيم رئيسية للخاصية دي: تحدد SameSite مدى مرونة إرسال الكوكيز بين المواقع، ولها ثلاث قيم:
- Strict: الكوكيز تتبعت بس مع الطلبات من نفس النطاق.
- Lax: تتبعت مع الطلبات من نفس النطاق وبعض الطلبات الآمنة من النطاقات الأخرى.
- None: تتبعت مع جميع الطلبات بشرط استخدام HTTPS.
حماية المواقع الكبيرة
CSRF Tokens
- تستخدم المواقع الكبيرة CSRF Tokens في الطلبات الحساسة، وتتأكد من صحة الرمز قبل تنفيذ الطلب.
Token Validation
- لما المستخدم يبعت طلب (POST request مثلا)، الموقع بيتأكد إن الرمز اللي جاي مع الطلب هو نفس الرمز اللي الموقع أصدره للمستخدم ده. لو الرمز مش مطابق، الطلب بيرفض.
تفعيل CORS بشكل محدود
- المواقع الكبيرة بتحدد دومينات معينة للوصول لمواردها عبر إعدادات CORS.
Content Security Policy (CSP)
- CSP بتحدد المصادر المسموح تحميلها وتشغيلها على الصفحة.
Secure Attribute
- خاصية Secure بتضيف للكوكيز عشان يتم إرسالها بس عبر HTTPS.
ليه السيناريو الشرير باظ؟
- SOP بيمنع أي محاولات للوصول إلى البيانات عبر دومين مختلف.
- HttpOnly و SameSite Attributes بيحموا الكوكيز من الهجمات.
- CSRF Tokens و CSP بيحموا المستخدمين من هجمات مثل CSRF و XSS.