
- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Обзор уязвимостей программной части. Способы их обнаружения и устранения
- •Содержание
- •1 Введение
- •2 Классификация уязвимостей
- •3 Методы обнаружения уязвимостей
- •3.1 Ручной поиск
- •3.2 Поиск по шаблонам
- •3.3 Фазинг
- •4 Способы устранения уязвимостей
- •4.1 Корректировка исходных кодов программ
- •4.2 Использование неисполняемых буферов
- •4.3 Применение проверок выхода за границы
- •4.4 Решение проблемы неинициализированных данных
- •4.5 Защита от sql-инъекций
- •4.6 Защита от xss-инъекций
- •4.7 Шифрование паролей
- •Заключение
- •Список использованных источников
4.4 Решение проблемы неинициализированных данных
При создании программы часто возникают ошибки, связанные с инициализацией данных. Неинициализированные данные могут привести к некорректной работе программы, например присвоение переменной случайного, соответствующего типу, числа до описания цикла, что может не позволить правильно выполнить алгоритм программы. Решение данной проблемы можно найти при ручном поиске и присвоение какой-либо переменной нулевого значения. С появлением новых версий языков программирования при компиляции программы, компилятор сам инициализирует данные, присваивая переменным, как правило, нулевые значения.
4.5 Защита от sql-инъекций
Атака типа SQL Injection — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода. Это атака, при которой производится вставка вредоносного кода в строки, передающиеся затем в базу MySQL, для синтаксического анализа и выполнения. Эта уязвимость может дать возможность атакующему выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, удалить, изменить или добавить данные), получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере.
Основная форма атаки SQL Injection состоит в прямой вставке кода в пользовательские входные переменные, которые объединяются с командами SQL и выполняются. Менее явная атака внедряет небезопасный код в строки, предназначенные для хранения в таблице или в виде метаданных. Когда впоследствии сохраненные строки объединяются с динамической командой SQL, происходит выполнение небезопасного кода.
Атака осуществляется посредством преждевременного завершения текстовой строки и присоединения к ней новой команды. Поскольку к вставленной команде перед выполнением могут быть добавлены дополнительные строки, злоумышленник заканчивает внедряемую строку меткой комментария «--». Весь последующий текст во время выполнения не учитывается.
Защититься от данного вида атаки достаточно просто. Все три правила защиты относятся к трем способам передачи информации серверу GET, POST, Cookie.
Фильтровать кавычки.
При использовании оператора сравнения строк LIKE фильтровать знаки “%” и “_”.
Не использовать при сравнении прерменных без кавычек типа SELECT …WHERE id=$id а использовать так SELECT ...WHERE id='$id' и обратиться к пункту 1.
Также можно включить magic_quotes_gpc = Off в файле php.ini.
4.6 Защита от xss-инъекций
XSS-атака, она же Cross-Site Scripting attack (межсайтовый скриптинг) — это атака, которая позволяет злоумышленнику вставлять в HTML-код сайта вставки вредоносного HTML-кода, как правило, скрипты JavaScript. Это может привести к различного рода неприятностям. Например:
при внедрении на сайт ссылки, которая ведёт на сайт злоумышленника, и представляет собой точную внешнюю копию того сайта, на котором была размещена. Человек, попав на сайт злоумышленника, может нечаянным образом оставить свои логин и пароль. Создание точной копии сайта жертвы на сервере злоумышленника — очень эффективный способ взлома и распространён широко в интернете и он далеко не обязательно связан с XSS-атакой;
с помощью XSS можно возможно выкрасть содержимое файлов cookie посетителей сайтов, в которых могут без проблем храниться пароли;
помимо взлома и кражи сайта, всегда возможна порча содержимого страницы.
От XSS уязвимости вас могут защитить две основные функции:
strip_tags() — удаляет из строки все HTML-теги, кроме разрешённых;
htmlspecialchars() — заменяет все спецсимволы на их HTML-аналоги (например: < заменяется на <).