Archive for the ‘Security’ Category

مختصر سريع في أمن المواقع

2008/08/08

في كل مرة أحاول أن أكتب كتيّب صغير (PDF صغير كما أقصد) أو مجموعة مقالات تتناول موضوع أمن المواقع أتراجع لعدة أسباب ، و لعل أهمها هو أني عندما أكتب موضوعا يتعلق بالبرمجة أختصر أو أكتب بطريقة غير مفهومة لذلك ألغي الفكرة.
في هذه المرة لن أكتب مقالات ولا كتيّبا ، سأكتفي بسطر يلخص من وجهة نظري أمن المواقع.

لكي تبني موقعا آمنا يجب ألّا تسمح بحصول أمر غير متوقع ، يجب دائما الحصول على القيم الصحيحة أو الممكنة ، لا تسمح بشيء غير مسموح به.

سأذكر بعض الأمثلة للتوضيح:

  • عندما تحتاج لطلب محتوى ما اعتمادا على رقمه فلا يجب أن يقبل تطبيقك إلا رقما. مثلا طلب مقالة اعتمادا على رقمها الفريد في قاعدة بيانات.
  • عندما يكون المحتوى نص لا يجب أن يقبل تطبيقك إلا النصوص ، لا يجب أن يقبل بوجود HTML أو JavaScript أو أي شيء آخر. مثلا عند نشر مقالة ، تعليق ، … يجب فلترة المحتوى.
  • الـ URI يجب أن يكون URI ، الصورة يجب أن تكون صورة ، الـ HTTP_REFERER يجب أن يكون HTTP_REFERER ، الـ IP يجب أن يكون IP … يجب اختبار كل شيء ، استخدام التعابير النظامية Regular Expressions مفيد.
  • عند تضمين ملف يجب أن يكون هو الملف الذي يجب تضمينه، عند السماح برفع ملف للموقع يجب أن يكون نوعه من الملفات المسموحة ، عند حذف شيء يجب أن يتم حذفه هو فقط، عند السماح بـ HTML بشكل محدود يجب الحفاظ على هذه المحدودية
  • … إلخ

هذه بعض الأمثلة ، لا حدود لما يمكن أن يفعله من يريد اختراق موقع ما ، لا يوجد أمان 100%، إخفاء الأخطاء شيء جيد ، فحص كل شيء شيء ضروري ، استخدام اختبارات صارمة ، بعض التعديلات هامة في إعدادات الـ PHP (هنا قائمة مميزة كتبها أيمن).

لم أكتب بتفصيل عن كل نوع من أنواع الثغرات ، و لم أكتب عن كيفية سد كل منها لأني كما ذكرت أجد صعوبة في شرح ذلك إلا بأسلوب (فايت ببعضو).
مطوّر المواقع يجب أن يولي كبير الأهمية للأمان ، فمهما حوى الموقع من مؤثرات بصرية و ألوان مبهرة و … ، لن يكون ذلك مهما إذا كان ذلك الموقع معرض للاختراق بسهولة أو بصعوبة متوسطة.