تشير علامة اختيار العناصر التي تحمل علامة (*) إلى أن العنصر يمثل حلاً أساسيًا للمشكلة ذات الصلة، ويجب أن تبذل قصارى جهدك لإكمال هذه المحتويات. تشير العناصر التي لم تحمل علامة (*) إلى أن العنصر لا يمكنه إزالة مخاطر السلامة بشكل كامل، ولكن يمكن تجنب مشاكل السلامة فقط من خلال هذه الطريقة.
حقن SQL
(*) استخدم وظيفة ربط متغير SQL عند دمج عبارات SQL
(*) إذا كانت قاعدة البيانات لا توفر ربط متغير، فأنت بحاجة إلى الهروب من كافة المتغيرات التي تشكل SQL وعدم عرض رسالة الخطأ سليمة في المتصفح.
قم بتعيين الأذونات المناسبة للمستخدمين الذين يصلون إلى قاعدة البيانات.
حقن سطر أوامر نظام التشغيل
(*) تجنب استخدام اللغات التي يمكنها تشغيل أوامر الصدفة، إذا كان مسموحًا لك ببدء تشغيل أوامر الصدفة، فأنت بحاجة إلى التحقق من جميع المتغيرات في معلمات الوظيفة للتأكد من تضمين العمليات القانونية فقط وعدم التحقق من معلمات اسم المسار/ اجتياز الدليل.
(*) لا تستخدم المعلمات التي تم تمريرها من الخارج مباشرة كأسماء ملفات.
(*) قصر عمليات فتح الملفات على الدلائل الثابتة ومنع أسماء الملفات من احتواء المسارات. قم بتعيين أذونات الوصول الصحيحة للملفات الموجودة على خادم الويب. تحقق من مشكلات إدارة جلسة اسم الملف.
(*) استخدم المحتوى الذي يصعب تخمينه كمعرف الجلسة
(*) لا تقم بحفظ معرف الجلسة في URL
(*) قم بتعيين السمة الآمنة لملفات تعريف الارتباط المستخدمة في بروتوكول https
(*) قم بإنشاء جلسة جديدة بعد تسجيل الدخول الناجح
(*) بعد تسجيل الدخول بنجاح، قم بإنشاء معلومات سرية بالإضافة إلى معرف الجلسة، والتحقق منها في كل مرة تزور فيها الصفحة. لا تستخدم قيمة ثابتة كمعرف الجلسة.
عند حفظ معرف الجلسة في ملف تعريف الارتباط، قم بتعيين تاريخ انتهاء الصلاحية لهجوم البرمجة النصية عبر المواقع (XSS)
الحل عند إدخال محتوى HTML غير مسموح به
(*) يجب الهروب من كل ما يتم إخراجه إلى الصفحة
(*) يُسمح فقط بعناوين URL التي تبدأ بـ "http://" أو "https://" عند إخراج عناوين URL
(*) لا تقم بإنشاء محتوى <script>...</script> ديناميكيًا
(*) لا تقرأ ورقة الأنماط من موقع ويب خارجي. الحل للتحقق من محتوى الإدخال عندما يُسمح بإدخال محتوى HTML.
(*) تحليل محتوى HTML للإدخال، وإنشاء شجرة تحليل، ثم استخراج الأجزاء غير النصية. استخدم البرامج النصية لحذف السلاسل ذات الصلة في محتوى HTML للإدخال
(*) أعد تحديد سمة مجموعة الأحرف الخاصة بنوع المحتوى في رأس HTTP للاستجابة لتجنب تسرب معلومات ملفات تعريف الارتباط، ويجب تعطيل أسلوب التتبع وتعيين سمة HttpOnly لجميع ملفات تعريف الارتباط (CSRF)
(*) يتم الوصول إلى جميع الصفحات من خلال POST. يتم إنشاء جزء من المعلومات بشكل عشوائي في الجزء المخفي من الصفحة السابقة، وتقوم الصفحة بعد الإرسال بفحص المعلومات وتنفيذها فقط إذا كانت صحيحة.
(*) اطلب كلمة المرور مرة أخرى قبل تنفيذ الأعمال
(*) تأكد من صحة المُحيل فقط عندما يكون صحيحًا، قم بتنفيذ العمليات المهمة وأرسل بريدًا إلكترونيًا إلى عنوان البريد الإلكتروني المحدد مسبقًا.
حقن رأس HTTP
(*) لا تقم بإخراج رؤوس HTTP مباشرة، ولكن استخدم واجهة برمجة تطبيقات إخراج معلومات الرأس التي توفرها بيئة التشغيل
(*) عندما لا يمكن استخدام واجهة برمجة التطبيقات، يجب حظر فواصل الأسطر في معلومات رأس الإدخال. يجب حذف فواصل الأسطر في جميع المدخلات الخارجية (باستخدام بعض الوسائل لإرسال رسائل البريد الإلكتروني إلى العنوان المحدد من قبل المهاجم).
(*) لا تستخدم المعلمات الخارجية كمعلومات رأس البريد الإلكتروني عندما يتعين عليك استخدام معلمات خارجية لتعيين معلومات الرأس، احذف الأحرف الخطيرة.
بيان حقوق الطبع والنشر: يمكنك إعادة الطباعة حسب الرغبة، ولكن يجب الاستشهاد بالمؤلف الأصلي تشارلي عند إعادة الطباعة.
الرابط الأصلي: http://tech.idv2.com/2008/04/19/secure-website-checklist/
مرجع محدد لاستراتيجية التطبيق: قائمة التحقق من أمان ممارسات PHP