خطوات الاستخدام
أدخل عدد حقول إدخال المستخدم (userInputFields): كل حقل إدخال يمثل نقطة دخول محتملة للهجمات. تعتمد المخاطر على عدد الحقول، فكلما زاد العدد زادت احتمالية وجود ثغرة. أدخل الرقم الإجمالي للحقول في تطبيقك، مثل 5 أو 10. يتم تقييم المخاطر على مقياس خطي مشبع: صفر حقول يساوي صفر خطر، ونصف بالمئة لكل حقل إلى أن يبلغ سقف الخمسين بالمئة عند مئة حقل فأكثر، فالحقول ما بعد المئة لا تضيف خطراً في هذا النموذج لأن الصيغة هي أدنى خمسين ونصف عدد الحقول.
أدخل مستوى ترميز الإخراج (outputEncoding): يحدد كيف يتم تعقيم البيانات قبل عرضها. الخيارات: 'none' (بدون ترميز) يزيد الخطر بنسبة 30%، 'partial' (ترميز جزئي) يزيد بنسبة 10%، 'full' (ترميز كامل) لا يضيف خطراً. هذا يعتمد على ممارسات التطوير: الترميز الكامل مثل استخدام htmlentities في PHP يمنع تنفيذ النصوص البرمجية.
أدخل وجود سياسة أمان المحتوى (cspHeader): CSP هو رأس HTTP يمنع تنفيذ النصوص غير المصرح بها. الخيارات: 'absent' (غياب CSP) يزيد الخطر بنسبة 20%، 'present' (وجود CSP) لا يضيف خطراً، 'strict' (CSP صارم) يقلل الخطر بنسبة 10%. CSP الصارم يحدد بدقة المصادر المسموح بها للجافاسكريبت.
احسب درجة المخاطر الإجمالية: يتم جمع النسب المئوية من الخطوات السابقة مع تعديلات إضافية. الصيغة: totalRisk = userInputRisk + outputEncodingRisk + cspRisk، حيث userInputRisk = min(50, 0.5 * userInputFields). ثم يتم تطبيق حد أقصى 100% وحد أدنى 0%. النتيجة النهائية تعبر عن احتمالية وجود ثغرة XSS.
أمثلة محلولة
تطبيقات عملية على مخاطر XSS بخطوات الحل كاملة.
الحل
نحسب أولاً مخاطر حقول الإدخال: 20 حقل * 0.5% = 10%. مخاطر الترميز: ترميز جزئي يضيف 10%. غياب CSP يضيف 20%. المجموع = 10% + 10% + 20% = 40%. درجة الخطر معتدلة، مما يعني أن هناك حاجة لتحسين الممارسات الأمنية. ينصح بتطبيق ترميز كامل للمخرجات وإضافة CSP صارم لتقليل المخاطر إلى 0%.
الحل
مخاطر الحقول هي أدنى(50، 0.5×150) أي أدنى(50، 75) فتساوي خمسين بالمئة لأن خطر الحقول يشبع عند المئة. والترميز الكامل لا يضيف شيئاً، أما CSP الصارم فيطرح عشرة، فيكون المجموع 50+0−10=40 بالمئة أي النطاق المتوسط من أكثر من عشرين إلى خمسين. ومهما كثر عدد الحقول فلن تتجاوز هذه الحاسبة خمسين بالمئة لمكوّن الحقول، فلا يمكن تخفيض الدرجة بتقليل الحقول دون المئة؛ الطريق الأنجع هو تقليل الحقول غير الضرورية والتحقق من صحة المدخلات. ولو استُبدلت السياسة الصارمة بأخرى غائبة لصارت 50+0+20=70 بالمئة، أي خطر مرتفع.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة مخاطر XSS.
مثال الوثيقة الأول جزئي بغير سياسة
- حقول إدخال المستخدم
- 20
- مستوى ترميز المخرجات
- partial
- سياسة أمان المحتوى
- absent
بلا حقول وبلا ترميز وسياسة
- حقول إدخال المستخدم
- 0
- مستوى ترميز المخرجات
- none
- سياسة أمان المحتوى
- absent
أسوأ حالة تجمع السقوف
- حقول إدخال المستخدم
- 100
- مستوى ترميز المخرجات
- none
- سياسة أمان المحتوى
- absent
تطبيق صغير محكم الترميز
- حقول إدخال المستخدم
- 10
- مستوى ترميز المخرجات
- full
- سياسة أمان المحتوى
- present
المجموع السالب يحصر للصفر
- حقول إدخال المستخدم
- 10
- مستوى ترميز المخرجات
- full
- سياسة أمان المحتوى
- strict
حبة فوق حد الخمسين
- حقول إدخال المستخدم
- 41
- مستوى ترميز المخرجات
- none
- سياسة أمان المحتوى
- present
مشبع مع ترميز جزئي
- حقول إدخال المستخدم
- 100
- مستوى ترميز المخرجات
- partial
- سياسة أمان المحتوى
- present