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

هل استخدام `mysql_real_escape_string()` و`mysql_escape_string()` كافٍ لتأمين تطبيقك؟

تم النشر بتاريخ 2024-12-22
تصفح:847

Is Using `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure Your Application?

هل 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