مدونة عبدالمحسن المنصور

مبرمج، أعمل في الادارة العامة للطيران المدنى.

ACoders @ Twitter

20 نصيحة لحماية نفسك من XSS

hdr بحسب تقرير موقع OWASP فأن مشكلة XSS تحتل المركز الثالث من حيث عدد الاختراقات التي تحدث عن طريقها، و لذلك قمت بجمع 20 نقطه ستقوم بمساعدتك لحل هذا المشكلة.

  1. لا تقوم ابدأ بعرض بيانات تم ادخلها عن طريق مصدر غير معروف من خلال مُدخلات (الفورم "Form") مثلا، قبل أن تقوم بتطهيرها.
  2. لا تنسي أن تقوم بالتحقق من اي بيانات تأتي من الخارج و لا تنسي تطهير المحتوي على حسب النوع.
  3. تذكر بأنه اي شي غير مكتوب في (المصدر "Source Code") فهو من مصدر غير معروف الهوية.
  4. تذكر بأن دولة htmlentities() غير مُتوافقه مع XML و HTML5 XML Serialization استخدم htmlspecialchars().
  5. قم دائما باستخدام المدخلات ENT_QUOTES, ENT_SUBSTITUTE التالية حين تقوم باستخدام htmlspecialchars().
  6. لا تعتمد على htmlspecialchars() كمصدر أساسي لتطهير الروابط، الجافا سكربت او (التنسيق "CSS").
  7. لا تعتمد على json_encode() لتطهير الجافا سكربت اذا كُنت تستخدم نسخة أقدم من PHP 5.3.
  8. استخدم rawurlencode() لتطهير (الحروف "Strings") التي ستستخدمها في الروابط وبعد ذاك قم باستخدام htmlspecialchars() على الرابط.
  9. لا تقم ابدأ بحقن الجافا سكربت بي مُدخلات لم تقم بتطيرها نهائياً مثل setAttribute("onclick", "كود غير مطهر").
  10. قم بالتحقق من جميع الروابط التي يتم إنشاءها من مصادر غير مُعروفة.
  11. لا تقم بتطهير الروابط عن طريق استخدام دولة filter_var() لانها لا تعمل بالشكل المطلوب وتسمح بحقن جافا سكربت في الروابط.
  12. لا تقم باستخدام روابط غير آمنه HTTP اذا كُنت تستخدم بروتوكول HTTPS.
  13. دائما قم بتطهير مُدخلات HTML عن طريق مكتبة HTMLPurifier لعرضها للزائر.
  14. قم بتطهير مُدخلات تنسيق BBCode او Markdown او اي مُبدل لـ HTML باستخدام مكتبة HTMLPurifier.
  15. تذكر بأن مكتبة HTMLPurifier هي افضل طريقة لعرض المحتوي بشكل آمن.
  16. حاول أن تقوم بإتباع سياسة حماية المحتوي، وقم بإيقاف استخدام التنسيق و الجافا سكربت بشكل عشوائي.
  17. دائما قم بإرسال عنوان (الرأس "Header") مع المحتوي و ذكر النوع والترميز الصحيح.
  18. تأكد من أنه الكوكيز الذي تستخدمه فقط للسيرفر بان يحمل مُدخل HttpOnly لمنع الجافا سكربت من قراءته
  19. تأكد من أن الكوكيز الذي يتم استخدامه في HTTPS يحمل مُدخل Secure بحيث لا يتم إرسال في حال تم تغير البروتوكول الي HTTP.
  20. دائما قم بالتشيك على مصدر البرمجيات التى تقوم بتحميلها من الانترنت او اي طرف ثالث قبل استخدامها في موقعك.

لا تزال مشكلة XSS من اكثر المشاكل التي تواجه المواقع بعد حقن قواعد البيانات، وهذه الامر يأثر على خصوصية زوارك، و انا انصح باستخدام مكتبة HTMLPurifier في اي مكان سيتم عرض محتوي للزائر، من الغريب ان يعتقد الأشخاص بانه باستخدام مكتبة bbCode او مكتبة Markdown فأنهم لن يصادفو مشكلة XSS، ويحاولون بشتى الطرق عدم إستخدام مكتبة HTMLPurifier.

التعليقات