هل mysql_real_escape_string() و mysql_escape_string() كافية لأمان التطبيقات؟
بينما يمكن أن توفر هذه الوظائف بعض الحماية ضد حقن SQL والهجمات الأخرى ، فإنها تفشل في معالجة بعض نقاط الضعف.
SQL حقن
لا يزال بإمكان Mysql_real_escape_string() تعريض تطبيقك لحقن SQL إذا كنت تتعامل بشكل غير صحيح مع متغيرات PHP داخل الاستعلامات. خذ بعين الاعتبار المثال التالي:
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
يمكن للمهاجم التلاعب بهذا الاستعلام لتنفيذ عبارات SQL غير مصرح بها، حيث إن mysql_real_escape_string() غير مصمم لتأمين أسماء الجداول أو أسماء الأعمدة أو حقول LIMIT.
مثل الهجمات
Mysql_real_escape_string() غير كافية لمنع عمليات استغلال LIKE. يمكن للمهاجم إدخال قيمة ضارة مثل "%%" لإرجاع جميع السجلات، مما قد يؤدي إلى تعريض المعلومات الحساسة للخطر.
Charset Exploits
قد تكون بعض المتصفحات عرضة لمجموعة الأحرف. عمليات الاستغلال، مما يسمح للمهاجمين بإدخال أحرف ضارة تتجاوز آليات الهروب وتنفيذ أوامر SQL عشوائية.
البيانات المعدة: أ الحل الشامل
لتأمين تطبيقك بشكل فعال، يوصى باستخدام البيانات المعدة بدلاً من mysql_real_escape_string(). تقوم البيانات المعدة بتنفيذ استعلامات SQL مع القيم التي يوفرها المستخدم عن طريق ربطها كمعلمات. وهذا يلغي الحاجة إلى الهروب اليدوي ويضمن تنفيذ SQL المصرح به فقط.
إليك مثال لاستخدام عبارة معدة في PHP:
$pdo = new PDO($dsn); $column = 'url'; $value = 'http://www.example.com/'; $limit = 1; // Validate the search parameter column. $validColumns = array('url', 'last_fetched'); if (!in_array($column, $validColumns)) { $column = 'id'; } $statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' . 'WHERE ' . $column . '=? ' . 'LIMIT ' . intval($limit)); $statement->execute(array($value)); while (($data = $statement->fetch())) { }
توفر البيانات المعدة آلية دفاع استباقية من خلال الاستفادة من ميزات الأمان لخادم قاعدة البيانات الأساسية. وهي بطبيعتها مقاومة لكل من الهجمات المعروفة وغير المعروفة، مما يضمن سلامة بياناتك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3