شبكة تعلم مع ناو

ما هو هجوم SQL Injection؟

SQL Injection هجوم يحقن أوامر SQL خبيثة عبر مدخلات المستخدم، مثل حقل البحث أو تسجيل الدخول، للتلاعب بقاعدة البيانات أو سرقة بياناتها.

الكود المعرّض للهجوم

// Dangerous: user input goes straight into SQL
$sql = "SELECT * FROM users WHERE email = '" . $_POST['email'] . "'";

إذا كتب المهاجم ' OR '1'='1 في حقل البريد، يصبح الشرط صحيحًا دائمًا، ويُرجع كل المستخدمين.

الحماية: الاستعلامات المجهزة

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$_POST['email']]);

هنا تُرسل القيمة منفصلة عن الأمر، فلا يمكن أن تتحول إلى SQL. أدوات مثل Query Builder في Laravel و$wpdb->prepare() في ووردبريس تفعل هذا.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.