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

هل يمكن لتجاوز حقن SQL `mysql_real_escape_string ()` `بسبب مشكلات ترميز الأحرف؟

نشر في 2025-02-20
تصفح:811

Can SQL Injection Bypass `mysql_real_escape_string()` Due to Character Encoding Issues?

استخدم مشكلة تشفير الأحرف لتجاوز حقن SQL لـ mysql_real_escape_string ()

على الرغم من أن

فكر في رمز PHP التالي:

$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
يبدو هذا الرمز آمنًا ، ولكن قد يتم استغلاله بسبب حالة ترميز مجموعة الأحرف.

طريقة الهجوم:

تعتمد الهجمات على الخطوات التالية:

  1. تعيين مجموعة الأحرف: حدد ترميزًا (على سبيل المثال ، GBK) حيث يمثل تسلسل البايت نفسه كلاً من الأحرف غير ASCII و ascii التراجع ('\').
  2. إنشاء الحمولة الحمولة: استخدم حمولة حمولة تم إنشاؤها بعناية تحتوي على أحرف متعددة البايتات غير صالحة ، مما يضمن أن بايت آخر يمثل ascii backslash.
  3. اتصل أدخل عصرًا خلفيًا قبل الاقتباسات ، مما يؤدي إلى سلسلة صالحة بشكل نحلي. إرسال الاستعلام: تصبح الحمولة النافعة التي هربت جزءًا من عبارة SQL ، مما يسمح للمهاجم بتجاوز الحماية المتوقعة.
  4. مبدأ العمل:
مشكلة المفتاح هي أن المحددات التي يتوقعها الخادم لا تتطابق مع الأحرف التي يدرسها العميل. على الرغم من أن

mysql_set_charset () الحالة.

كنتيجة لـ: يمكن لهذا الهجوم تجاوز بيان المعالجة المسبقة لـ PDO حتى لو تم تعطيل بيان المعالجة المسبقة المحاكاة. علاج:

استخدم مجموعات الأحرف غير القابلة للخلايا ، مثل UTF8MB4 أو UTF8 ، للتخفيف من هذه المشكلة. يوفر Enable No_backSlash_escapes وضع SQL أيضًا الحماية.

مثال آمن:

قم دائمًا بتعيين مجموعة الأحرف بشكل صحيح باستخدام mysql_set_charset ()

أو معلمات تعيين أحرف DSN من PDO. تصريحات المعالجة المسبقة في MySQLI هي أيضا محصنة ضد هذا الهجوم.

ختاماً:

بينما عادةً ما يوفر

mysql_real_escape_string () حماية قوية ، من المهم أن تكون على دراية بحالات الحافة المحتملة لضمان الدفاع الكامل ضد حقن SQL.

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

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

Copyright© 2022 湘ICP备2022001581号-3