تشرح هذه المقالة الفرق بين استخدام mysql_real_escape_string لفرز ومعالجة البيانات المقدمة من المستخدم واستخدام ثلاث وظائف مماثلة: addlashes وmysql_escape_string. يمكن إدراج البيانات التي تم الهروب منها مباشرة في قاعدة البيانات.
إنه تفسير جيد للفرق بين addlashes وmysql_real_escape_string. على الرغم من أن العديد من مبرمجي PHP المحليين لا يزالون يعتمدون على Addlashes لمنع حقن SQL (بما في ذلك أنا)، إلا أنني ما زلت أوصي بأن يقوم الجميع بتعزيز عمليات التحقق لمنع حقن SQL باللغة الصينية. المشكلة في Addlashes هي أن المتسللين يمكنهم استخدام 0xbf27 لاستبدال علامات الاقتباس المفردة، بينما يغير Addlashes فقط 0xbf27 إلى 0xbf5c27، والذي يصبح حرفًا صالحًا متعدد البايت لا يزال يعتبر اقتباسًا واحدًا، لذلك لا يمكن لـ Addlashes اعتراضه بنجاح.
بالطبع، Addlashes ليست عديمة الفائدة، فهي تستخدم لمعالجة السلاسل أحادية البايت، استخدم mysql_real_escape_string.
بالإضافة إلى ذلك، للحصول على مثال get_magic_quotes_gpc في دليل PHP:
إذا (!get_magic_quotes_gpc()) {
$lastname = addlashes($_POST['lastname']);
} آخر {
$lastname = $_POST['lastname'];
}
من الأفضل التحقق من $_POST['lastname'] عندما يكون magic_quotes_gpc مفتوحًا بالفعل.
دعونا نتحدث عن الفرق بين الوظيفتين mysql_real_escape_string وmysql_escape_string:
لا يمكن استخدام mysql_real_escape_string إلا عندما يكون (PHP 4 >= 4.3.0، PHP 5). بخلاف ذلك، يمكنك فقط استخدام mysql_escape_string. الفرق بين الاثنين هو:
يأخذ mysql_real_escape_string في الاعتبار مجموعة الأحرف الحالية للاتصال، بينما لا يأخذ mysql_escape_string ذلك.
للتلخيص:
addlashes() هي إضافة قسرية؛
mysql_real_escape_string() ستحدد مجموعة الأحرف، ولكن هناك متطلبات لإصدار PHP؛
mysql_escape_string لا تأخذ في الاعتبار مجموعة الأحرف الحالية للاتصال.