ماهي أساليب الحماية من XSS و SQL Injection التي تستخدمونها

مهما كانت اللغة التي تختارها في بناء تطبيق الإنترنت فأنت عرضة للهجوم بعدة طرق ولعل أشهر الأساليب المنتشرة هذه الأيام هي Cross site scripting و SQL Injection وكنت أود أن أعرف الأساليب والطرق التي تستخدمونها من أجل تجنب هذا النوع من الهجمات؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

15

SQL Injection دائما اتسخدم store procedure

لكن لو اضطريت اني اكتب امر sql فانه في

.net

ارسال المتغيرات كبرميتر عن طريق الداتا ادابتر

php

mysql_real_escape_string


Cross site scripting

في الدوت نت محميه من المشكله هذه (تحتاج للبحث اكثر لكثره اختلاف النسخ والبيئات)

في php

htmlspecialchars

15

ارشح وبشدة الإطلاع على الكتيبات والمشاريع في موقع

بهذا الخصوص. مثلا

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 محمية بشكل إفتراضى من هجمات الـ SQL Injection و ذلك عند الإعتماد على الـ LinQ فى تنفيذ الأوامر على قاعدة البيانات،

فإذاً المبرمج لا يحتاج لكثرة التفكير للحماية من تلك الثغرة و ليهتم بجودة تطبيقه.

في Php استخدم PDO

أحسن و اضمن و امكانيات رائعه عن كود ال Mysql القديم لما به من حقن القاعدة و مشاكل لا تنتهي

I Dont Use mysql_* Ancient Code Anymore

عند استخدامك للـ .net

ستلاحظ انك تحتاج الى اوامر لكي تسمح ببعض المعلومات بالمرور لأن البرمجيه نفسها تمنعها من الدخول , فعلى سبيل المثال اذا كنت تطور محرر ليقوم بتنسيق النص وتحويله الى html ومن ثم ادخالة الى قاعدة البيانات ف بشكل افتراضي لن تستطيع فعل هذا الى اذا سمحت له انت بذلك , أستخدم السطر [ValidateInput(false)] لكي يقوم بأهمال طبيعه النص وادخاله كما هو في قاعدة البيانات

كل الاجابات كانت وافية و كافية و لكن ما أضيفه هو التالي :

اذا كان الموقع الذي تعمل عليه شديد الاهمية فلا تعتمد كليا على لغة البرمجة او المنصة لكي توفر لك الحماية لانك لا تعلم حقا اذا كانت توجد تقنيات للتخطي ام لا

لذا من الافضل العتماد على سياسة white list & black list لتحمي تطبيقك من اي input غير متوقع او مشبوه

أنا أستخدم تقنية Prepared statements للتخلص من معظم المخاطر التي يمكن أن تتسبب فيها محاولات الاختراق بطريقة SQL Injection وهو أسلوب سهل وفاعل، لمزيد من التفاصيل إليكم هذا الرابط: