سؤال

وقيل لي في هذا الاستعلام بلدي هو عرضة لل حقن SQL.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='$_GET[site]' 
                                AND date BETWEEN '$start_date' AND '$end_date' ");

وماذا سيكون أسهل طريقة لمعالجة هذه المشكلة؟ وهل لديك بعض مزيد من القراءة حول موضوع الحقن؟ (شيء أنا قد تفوت على جوجل). شكرا!

هل كانت مفيدة؟

المحلول

استخدم تحضير بيانات .

في معظم الحالات، تحضير بيانات قيام بهذه المهمة الجمع بين الاستعلام الخاص بك مع المعلمات الخاصة، بطريقة آمنة.

نصائح أخرى

و$ _ GET [ 'موقع'] هو القيمة التي تأتي مباشرة من URL في المتصفح مما يعني أن المستخدم يمكن بسهولة تغيير هذه القيمة إلى أي شيء يريدونه، يجب عليك التحقق / تطهير تلك القيمة، كل القيم في الواقع قبل إرسالها إلى قاعدة بيانات.

وشيء من هذا القبيل سيكون بداية، لا يزال من الممكن استخدام مزيد من العمل وهناك العديد من الطرق للقيام بذلك، وأود أن إنشاء وظيفة مخصصة / فئة لتمرير جميع المتغيرات بسهولة من خلال شاملا للموقع والتي يمكن الاشياء ببساطة تكرار مثل هذه

$site = mysql_real_escape_string($_GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);

get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");

mysql_real_escape_string هو أبسط وأسهل شكل من أشكال الضمان هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top