это уязвимость codeigniter? - PullRequest
       17

это уязвимость codeigniter?

1 голос
/ 17 сентября 2009

Я обнаружил ошибку в своем скрипте разбиения на страницы в CodeIgniter:

 $this->db->where("by_id",$user_id);
 $this->db->order_by("date","desc");
 $this->db->limit(10,$from);
 $query = $this->db->get("status");

URL выглядит так: сервер / демо / страница / 10

, поэтому, если пользовательский тип сервера / nedjma / baniss / 1000000000000000000000

Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около '1000000000000000000000, 10' в строке 5

ВЫБРАТЬ * ИЗ (status) ГДЕ by_id = '58' ЗАКАЗАТЬ НА date desc LIMIT 1000000000000000000000, 10

подскажите, пожалуйста, в чем ошибка?

1 Ответ

4 голосов
/ 17 сентября 2009

Это не уязвимость и не ошибка CodeIgniter. Это просто проблема SQL / MySQL. Я провел небольшое тестирование с phpMyAdmin, самое большое смещение, которое вы можете использовать, где-то около 18000000000000000000.

Что-нибудь большее, и вы получите ошибку синтаксиса SQL. Если вы хотите предотвратить возникновение этой ошибки, просто убедитесь, что $from не больше 18 x 10 ^ 18, или создайте свои собственные страницы ошибок. Вы также можете просто отключить отчеты об ошибках - в верхней части index.php CI, error_reporting(0);

Последнее замечание: отправленный вами код не открыт для внедрения SQL. Класс Active Record CodeIgniter экранирует и проверяет ваш ввод для вас. Если $from не является числом, то Active Record не будет генерировать предложение LIMIT при создании SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...