Особенность прямого внедрения вредоносных инструкций в SQL-запросы. Сущность основных способов защиты от инъекции, в основе которых лежит правильная и хорошая фильтрация пользовательского ввода. Характеристика автоматизированного анализа исходного кода.
Аннотация к работе
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯМногие веб-разработчики даже не догадываются, что SQL-запросы могут быть подделаны, и считают, что SQL-запросы всегда достоверны. Прямое внедрение вредоносных инструкций в SQL-запросы - это методика, в которой взломщик создает или изменяет текущие SQL-запросы для отображения скрытых данных, их изменения или даже выполнения опасных команд операционной системы на сервере базы данных.1.1 Из чего состоит запрос Позволяет злоумышленнику выполнять запросы в БД сайта, а в некоторых случаях писать/читать файловую систему с правами сервера баз данных. Любой запрос SQL состоит из нескольких предложений. Это пример самого простого запроса, который состоит из двух предложений: предложение SELECT и предложение FROM. Для выбора по условию к запросу добавляется предложение WHERE.Данный пример собирает запрос, подобное можно встретить во множестве сайтов. Как видно, в запрос просто подставляется значение ячейки суперглобального массива $_GET. Сначала узнаем количество полей возвращаемых запросом, для этого начинаем угадывать количество столбцов. Для выполнения запроса к другой базе данных достаточно поставить ее имя перед именем таблицы и поставить “.”(точка) между именем БД и таблицей. Имея доступ к INFORMATION_SCHEMA, злоумышленник легко узнает количество, имена и структуры всех таблиц БД.Существуют разные способы защиты от инъекции, но в основе каждого лежит правильная и хорошая фильтрация пользовательского ввода. Данные к веб-приложениям поступают из массивов GET, POST и из COOKIE. Нужно численные значения преобразовывать к численным посредством intval(), floatval() и тп. Следует отметить, что intval() нельзя использовать при проверке число или нет в переменной. Для проверки на число лучше использовать is_numeric().В данном курсовом проекте производится аудит "Системы управления сайтами NETCAT 3.0 Extra". Отключаем magic_quotes_gpc - это процесс автоматического экранирования входящих данных PHP-скрипта. вредоносный фильтрация пользовательский код Отключаем его путем удаления соответствующих строк из .htaccess, расположенного в корневой директории web-сервера. Магические кавычки также включены в конфигурационном файле /netcat/vars.inc.php, поэтому сбрасываем его значение в ноль и в этом файле. Остался еще файл php.ini, в котором переопределяем значения "display_errors" и "display_startup_errors" в значение "On", и меняем "error_reporting" в "E_ALL & ~E_NOTICE".Для автоматизированного анализа исходного кода существует огромное число инструментов, позволяющих за короткое время выявить потенциальные уязвимости путем разбора кода. Разделяют два подхода к анализу - динамический и статический. Такой инструментарий можно найти под все распространенные языки программирования, в том числе под PHP. Такой анализ в ряде случаев выдает огромное число false positive либо вообще не находит ни одной уязвимости в коде, который может быть просто наполнен различными недоработками. Таких продуктов не так уж и много в силу их сложности (одну и ту же операцию можно выполнить бесконечным числом вариаций, поэтому такие анализаторы должны хорошо уметь парсить синтаксис языка).Внедрение SQL-кода - один из распространенных способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.