شرح صفوف ومحتوى الفقرة
تُعد ثغرة حقن أوامر SQL (SQL Injection — SQLi) من أخطر الثغرات الأمنية في تطبيقات الويب، وتحدث عندما يقوم المبرمج بدمج متغيرات المستخدم نصياً داخل جملة الاستعلام:
- كيف يقع الاختراق: عند كتابة متغير مباشرة داخل نص SQL، يستطيع المهاجم إدخال علامة تنصيص مفردة متبوعة بأوامر منطقية مثل
' OR '1'='1لتغيير معنى الاستعلام بالكامل أو مسح الجداول. - القاعدة الذهبية الصارمة: لا تدمج أي متغير نصياً داخل جملة SQL تحت أي ظرف كان.
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;