اذهب إلى المحتوى

السؤال

نشر

في جمل الاستعلام Sql، يمكن أن تتعرض الجملة إلى تغيير من طرف المستخدم، كهذا المثال:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");

حيث يمكن للمستخدم إذا كان ملمًا بالبرمجة أن يُحدث تغيراً في الكود، كأن يزيل جدول أو ما شابه ذلك بتغيير قيمة المتغير 

$unsafe_variable

إلى:

value'); DROP TABLE table;--

فتصبح جملة الاستعلام:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')

ما الذي بإمكاني فعله لتفادي مثل هذه الثغرات؟

Recommended Posts

  • 0
نشر

هناك طريقتين لتفادي ذلك:

  • استعمال مكتبة Pdo وهي من أقوى مكتبات جمل الاستعلام المستعملة مع php و Mysql حاليا.

حيث تمنع المستخدم من تغير جملة الاستعلام بعد وظيفة prepare:

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array('name' => $name));

foreach ($stmt as $row) {
    //  $row يمكنك هنا اظهار أو فعل أي أوامر برمجية على المتغير
}

 

  • استعمال مكتبة Mysqli ، حيث تمكنك هذه المكتبة من التواصل مع قاعدة البيانات و إجراء مختلف جمل الاستعلام :
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // $row يمكنك هنا اظهار أو فعل أي أوامر برمجية على المتغير
}

 

للتعمق أكثر :

1

2

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...