Фильтровать строки запроса URL для SQL-инъекций - PHP - PullRequest
3 голосов
/ 05 января 2011

Мне дали сайт для исправления, который недавно был взломан с помощью SQL-инъекции. Из того, что я могу узнать, автоматический инжектор SQL Havij использовался для вставки кода в параметры строки запроса URL.

Сайт представляет собой пользовательскую сборку CMS и немного устарел. Я не думаю, что полная перестройка вероятна.

Какой лучший способ предотвратить повторение этого? Я PHP-разработчик, но обычно просто проверяю формы или использую системы, в которых эта функциональность уже встроена - wordpress, codeigniter, drupal и т. Д.

Любые идеи или мысли приветствуются.

Спасибо

Ответы [ 3 ]

3 голосов
/ 05 января 2011

Существует только одно простое правило: каждая переменная (не имеет значения, откуда она взялась - от пользователя или она уже получена из базы данных), которая помещается в запрос sql, должна быть очищена с mysql_real_escape_string() до.

Или вы можете использовать подготовленные запросы (подготовленные операторы / заполнители), не имеет значения.

2 голосов
/ 05 января 2011

Возможно, вы не сможете изменить весь код, но, возможно, вы сможете изменить код базы данных. Если это так, попробуйте использовать PDO и подготовленные заявления. Я рекомендую pdo, потому что вы не указали тип базы данных. Если вы используете mysql, я думаю, что mysqli также предоставляет подготовленные операторы.

0 голосов
/ 11 июня 2019

$ url = filter_var ($ url, FILTER_SANITIZE_URL);

...