K@m@l نشر 4 أكتوبر 2015 أرسل تقرير نشر 4 أكتوبر 2015 في جمل الاستعلام 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;--')ما الذي بإمكاني فعله لتفادي مثل هذه الثغرات؟ اقتباس
0 E.Nourddine نشر 4 أكتوبر 2015 أرسل تقرير نشر 4 أكتوبر 2015 هناك طريقتين لتفادي ذلك:استعمال مكتبة 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 يمكنك هنا اظهار أو فعل أي أوامر برمجية على المتغير } للتعمق أكثر :12 اقتباس
السؤال
K@m@l
في جمل الاستعلام Sql، يمكن أن تتعرض الجملة إلى تغيير من طرف المستخدم، كهذا المثال:
حيث يمكن للمستخدم إذا كان ملمًا بالبرمجة أن يُحدث تغيراً في الكود، كأن يزيل جدول أو ما شابه ذلك بتغيير قيمة المتغير
إلى:
فتصبح جملة الاستعلام:
ما الذي بإمكاني فعله لتفادي مثل هذه الثغرات؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.