database security sql hacking

SQL Injection

أكيد سمعنا كتير عن ال SQL Injection وقرأنا عنه كتير ، فاحنا هنقدملكم انهاردة دليلكم المختصر والوافي عنه فورقة وقلم وتعالوا نتكلم عن ايه هو وليه بنسمع عنه كتير وازاي كمبرمج احمي التطبيقات بتاعتي تجاه النوع دا من الهجمات.

تم التحديث في 2024-04-17
تعديل على GitHub
SQL Injection

أكيد سمعنا كتير عن ال SQL Injection وقرأنا عنه كتير ، فاحنا هنقدملكم انهاردة دليلكم المختصر والوافي عنه 

فورقة وقلم وتعالوا نتكلم عن ايه هو وليه بنسمع عنه كتير وازاي كمبرمج احمي التطبيقات بتاعتي تجاه النوع دا من الهجمات.


SQL Injection

الـ SQL Injection هو من أشهر أنواع الهجمات الأمنية على تطبيقات الويب و دا لسببين:

  1. شيوع ال SQL Injection vulnerabilities أو الثغرات من النوع دا في التطبيقات لأنه أي موقع Web بيتعامل مع قواعد البيانات بـ Code معين معرض ان الـ Code دا يكون فيه هذه الثغرات وما علي الـ Attacker أو المهاجم انه يلاقيها ويستغلها.
  2. لأنه بيستهدف دايمًا قواعد البيانات واللي دايمًا بتشيل بيانات مهمة ممكن الـ Hacker يستغلها.

طريقة الـ SQL Injection

النوع دا من الهجمات معتمد علي ال dynamic sql queries اللي بستخدم String concatenation زي المثال دا

طرق الحماية تجاه الـ Sql Injection

في 3 طرق وقاية أساسية تجاه النوع دا من الهجمات:

  1. استخدام Prepared Statements أو Parameterized Queries
  2. التحقق من أي بيانات يقوم المستخدم بإدخالها Input Validation and Sanitation
  3. تحديد صلاحيات وامتيازات استخدام قواعد البيانات في التطبيق باستخدام (Principle of Least Privilege)

مثال عملي على الـ SQL Injection والحماية منه

خلينا نشوف مثال عملي على الـ SQL Injection وكيفية الحماية منه:


// VULNERABLE CODE - SQL Injection
String query = "SELECT account_balance FROM user_data WHERE user_name = "
           + request.getParameter("customerName");
try {
  Statement statement = connection.createStatement();
  ResultSet results = statement.executeQuery(query);
}

// Attacker input: 'OR '1' = '1
// Result: SELECT account_balance FROM user_data WHERE user_name = 'OR '1' = '1
// This returns ALL user data!

في المثال ده:

  • Vulnerable Code: يوضح الكود المعرض للـ SQL Injection
  • Secure Code: يوضح كيفية الحماية باستخدام Prepared Statements
  • Python Example: يوضح الحماية في Python مع ORM

وعيك كمبرمج بالنوع دا من الهجمات أساسي لأنه باستخدام الـ best practices دي من البداية أثناء كتابتك للـ Code وتعاملك مع قاعدة البيانات بيوفر عليك مجهود كبير فيما بعد, غير طبعًا أن الهجمات المتعلقة بالبيانات وتسريبها لجهات غير معنية مكلفة جدًا من الناحية التقنية والعملية.

ولأن منع الهجمات من الحدوث 100% ببساطة غير ممكن لازم نعمل حسابنا اننا نزود تسجيل للأحداث (Logging and Monitoring) بحيث ان لو حصل اي Unexpected Behaviour أقدر أحدد لو كان محاولة هجوم واخذ الاجراءات المناسبة.


مواضيع ذات صلة
Network & Security

اشترك في النشرة البريدية

احصل على أحدث المحتوى والأخبار مباشرة في بريدك الإلكتروني

🔒 نحترم خصوصيتك. لن نشارك بريدك الإلكتروني مع أي طرف ثالث.