مهما كانت اللغة التي تختارها في بناء تطبيق الإنترنت فأنت عرضة للهجوم بعدة طرق ولعل أشهر الأساليب المنتشرة هذه الأيام هي Cross site scripting و SQL Injection وكنت أود أن أعرف الأساليب والطرق التي تستخدمونها من أجل تجنب هذا النوع من الهجمات؟
ماهي أساليب الحماية من XSS و SQL Injection التي تستخدمونها
SQL Injection دائما اتسخدم store procedure
لكن لو اضطريت اني اكتب امر sql فانه في
.net
ارسال المتغيرات كبرميتر عن طريق الداتا ادابتر
php
mysql_real_escape_string
Cross site scripting
في الدوت نت محميه من المشكله هذه (تحتاج للبحث اكثر لكثره اختلاف النسخ والبيئات)
في php
htmlspecialchars
ارشح وبشدة الإطلاع على الكتيبات والمشاريع في موقع
بهذا الخصوص. مثلا
OWASP Enterprise Security API
OWASP Application Security Verification Standard Project
ثغرات SQLi و XSS هي بشكل أساسي تتشكل من خلال عدم فلترة المدخلات بشكل صحيح للمعالج من داخل السكربت مما يؤدي لوجود مثل هذه الثغرات .. الحل برأيي أن يقوم المبرمج بالقيام بمرحلتين الأولى هي عملية Code Review وهي عملية يقوم بها مختبر الإختراق/المبرمج ويقوم من خلال بالتأكد من أن جميع المدخلات إلى السكربت تمت فلترتها سواء من خلال strip_tags أو الدوال المشابهه لمنع XSS وأيضاً إستخدام mysql real escape و الدوال المشابهه لها لمنع الإستعلامات الغير مشروعة او ما يعرف ب SQLi .. ومن الممكن بعد القيام بعملية Code Review ان يقوم المبرمج بإختبار بسيط للسكربت في بيئه حقيقية ويقوم بمحاولة إختراق السكربت وهذا ما يعرف بعملية إختبار الإختراق ومن خلالها يكون قد تأكد من حماية السكربت بنسبه جيده .. ولكي يزيد الحماية لأقصى الحدود الممكن أن يستخدم بعض ال IDS مثل Mod_security لكي يضمن عدم الوقع بهذه الثغرات.
عند استخدامك للـ .net
ستلاحظ انك تحتاج الى اوامر لكي تسمح ببعض المعلومات بالمرور لأن البرمجيه نفسها تمنعها من الدخول , فعلى سبيل المثال اذا كنت تطور محرر ليقوم بتنسيق النص وتحويله الى html ومن ثم ادخالة الى قاعدة البيانات ف بشكل افتراضي لن تستطيع فعل هذا الى اذا سمحت له انت بذلك , أستخدم السطر [ValidateInput(false)] لكي يقوم بأهمال طبيعه النص وادخاله كما هو في قاعدة البيانات
كل الاجابات كانت وافية و كافية و لكن ما أضيفه هو التالي :
اذا كان الموقع الذي تعمل عليه شديد الاهمية فلا تعتمد كليا على لغة البرمجة او المنصة لكي توفر لك الحماية لانك لا تعلم حقا اذا كانت توجد تقنيات للتخطي ام لا
لذا من الافضل العتماد على سياسة white list & black list لتحمي تطبيقك من اي input غير متوقع او مشبوه
أنا أستخدم تقنية Prepared statements للتخلص من معظم المخاطر التي يمكن أن تتسبب فيها محاولات الاختراق بطريقة SQL Injection وهو أسلوب سهل وفاعل، لمزيد من التفاصيل إليكم هذا الرابط:
التعليقات