2015-06-01 3 views
3

Я пытался выполнить следующий код, используя redbeansphp (работает в верхней части php pdo). Проблема заключается в том, что когда я передаю действительный идентификатор в формате, например - «id; DROP TABLE users»; , если идентификатор совпадает с любым идентификатором в базе данных, тогда возвращается результат. Хотя SQL-инъекция не работает. Я также пробовал другие способы инъекции. Ни один из них не работает. Но почему это так, что я получаю результат, хотя идентификатор неверен. Еще одна вещь: если я добавлю код перед идентификатором, тогда результаты не придут. Любая помощь?SQL-запросы в Redbeanphp

$article = R::getAll('SELECT AVG(rating) FROM reviews WHERE id =?', array($Id)); 

     //throwing an exception if the query is unsuccesful 
     if(!$article){ 
      throw new Exception(); 
     } 

     //response message 
     $arr=array('status' => 'successful', 'message' => 'Reviews found','Reviews'=> $article); 
     $app->response()->header('Content-Type', 'application/json'); 
     $msg=json_encode($arr); 
     $app->response->body($msg); 

ответ

0

После долгих исследований и собирается через redbeans файл я наткнулся на эту функцию abs(), который используется в связывающем в parameters.It основном возвращает абсолютное значение любого «число» вход , Итак, если вы входите в abs («11; DROP TABLE users;»), функция преобразует его в значение 11.

Итак, это причина того, что даже если введен неверный ввод (с действительным id, предшествующим ему) один получает действительный результат без какой-либо SQL-инъекции.

Смежные вопросы