انتقل إلى محتوى الدرس

How SQL Injection Attacks Happen كيف تحدث ثغرة حقن SQL

تعلّم الاستعلامات المحضرة وإدراج البيانات بأمان ضد SQL Injection في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
1 صفوف تعليمية
PHP
5 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تُعد ثغرة حقن أوامر SQL (SQL Injection — SQLi) من أخطر الثغرات الأمنية في تطبيقات الويب، وتحدث عندما يقوم المبرمج بدمج متغيرات المستخدم نصياً داخل جملة الاستعلام:

  • كيف يقع الاختراق: عند كتابة متغير مباشرة داخل نص SQL، يستطيع المهاجم إدخال علامة تنصيص مفردة متبوعة بأوامر منطقية مثل ' OR '1'='1 لتغيير معنى الاستعلام بالكامل أو مسح الجداول.
  • القاعدة الذهبية الصارمة: لا تدمج أي متغير نصياً داخل جملة SQL تحت أي ظرف كان.
مخطط يوضح مراحل الاستعلام المحضر عبر prepare و execute وقراءة lastInsertId لمنع حقن SQL في PHP 8.4
PHP
<?php
// NEVER concatenate variables into SQL like this:
// $badSql = "INSERT INTO logs VALUES ('" . $input . "')";

// ALWAYS use placeholders (?) or (:name) with prepare():
$safeSql = "INSERT INTO logs (message) VALUES (:message)";
echo $safeSql;