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() في ووردبريس تفعل هذا.