"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الكشف عما إذا كان mysql_real_escape_string يمكن أن يمنع حقن SQL

الكشف عما إذا كان mysql_real_escape_string يمكن أن يمنع حقن SQL

نشر في 2025-04-12
تصفح:685

Is mysql_real_escape_string Truly Secure Against SQL Injection Attacks?

على الرغم من أن البعض قد جادلوا بأن الاستخدام غير الصحيح للوظيفة هو اللوم ، فقد أثار الآخرون مخاوف بشأن قيوده المتأصلة.

قيود الاستخدام

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

$ sql = "...` foo` = '$ value' ... "؛ يمكن أن يؤدي تطبيق mysql_real_escape_string في أي سياق آخر ، مثل استخدامه للهروب من القيم المستخدمة خارج اقتباسات ، يمكن أن يؤدي إلى الضعف. mysql_real_escape_string

مثال على الهجوم الذي يمكن أن يتجاوز mysql_real_escape_string عند استخدامه للهروب من القيم الرقمية. فكر في الاستعلام التالي:
$value = mysql_real_escape_string($value, $link);
$sql = "... `foo` = '$value' ...";
سيقوم الاستعلام بحذف جميع المستخدمين ، لأن شرط "أو 1 = 1" صحيح دائمًا. يوضح هذا الهجوم أهمية استخدام أنواع البيانات الصحيحة وطرق الهروب اعتمادًا على السياق. إذا لم يتم تعيين ترميز اتصال قاعدة البيانات بشكل صحيح ، فقد يؤدي ذلك إلى تناقضات بين كيفية هروب MySQL_Real_escape_string من الأوتار وكيف تفسرها قاعدة البيانات. يمكن أن يخلق هذا التناقض نقاط الضعف في ظل ظروف محددة ، خاصةً عند التعامل مع سلاسل متعددة الأوقات. يُنصح باستخدام أساليب بديلة مثل العبارات المعدة ، والاستعلامات المعلمة ، أو واجهات برمجة تطبيقات قاعدة البيانات الحديثة التي توفر حماية أكثر قوة ضد نقاط الضعف في الحقن.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3