سؤال

مرحبًا ، أنا أستخدم Acunetix لاختبار موقع الويب الخاص بي ، المشكلة مع هذا البرنامج النصي http://boedesign.com/blog/2007/02/18/ajax-star-reating/

لا يعرض Acunetix أي رسالة ، لكن عندما أختبر SQL العمياء ، يمكنني الحصول على قيم مثل

8 and 1=0 --
8 and 31337-31337=0

في عمود Rating_id MySQL ، أريد فقط السماح للأرقام هناك ، لذلك قمت بإصلاح القليل ، لكن نظرًا لأن الرقم الأول هو 8 ، فقد طلبت ذلك ، كيف يمكنني إصلاحه؟ إنه شيء من هذا القبيل في insern/rating_process.php

// IF JAVASCRIPT IS ENABLED
if($_POST){
$id = escape($_POST['id']);
$rating = (int) $_POST['rating'];

if($rating <= 5 && $rating >= 1 && $id >= 1 && $id <=9999999){

if(@mysql_fetch_assoc(mysql_query("SELECT id FROM ratings WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){

echo 'already_voted';  
} else {

ونفس نفس التفكير في "// إذا تم تعطيل JavaScript"

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

المحلول

إذا كنت تعلم أن التصنيف يجب أن يكون عددًا صحيحًا ، فيمكنك إلقاء متغيرك كصاحب صحيح:

$rating = (int) $_POST['rating'] ;

يمكنك أن تفعل كذلك على الخاص بك id عامل.

إنه يضمن لك أن يكون لديك قيم عدد صحيح فقط.

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