Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / SQL-инъекции

.pdf
Скачиваний:
117
Добавлен:
22.03.2016
Размер:
1.49 Mб
Скачать

Основные виды инъекций

Альтернативные кодировки.

Цель:

Затруднение обнаружения атак

Использование альтернативные кодировки: шестнадцатеричные,

ASCII, Unicode.

Пример.

login = "LegalUser; Exec 0x73687574646f776e) --".

То

SELECT accounts FROM users WHERE login=’legalUser’; exec(char(0x73687574646f776e)) -- AND pass=’’ AND pin=

0x73687574646f776e = SHUTDOWN

Предотвращение SQL-инъекций

Применение техник безопасного программирования

Проверка типов. Необходимо анализировать вводные данные, например, проверять их тип (в случае цифрового входа, можно отбросить те, которые содержат не цифровые символы), заменять специальные символы.

Применение шаблонов положительного совпадения.

Проверка входных данных только на разрешенные символы (например, проверить только числовой ввод проще)

Кодирование входных данных

Отключить вывод сообщений об ошибках.

Должны проверяться все источники входных данных

Использование параметризированных SQL-запросов.

Методы обнаружения и предотвращения SQL-инъекций

Тестирование «черный ящик»

Статические кодовые контроллеры.

JDBC-Checkers – техника для статической проверки правильности типов динамически генерируемых запросов. Эта техника не была разработана с целью обнаружения и предотвращения SQLIA, но может быть использована для предотвращения атак, основанных на несоответствии типов. Основной недостаток – может находить только тавтологии.

Статический и динамический анализ.

AMNESIA, SQLGuard, SQLcheck

Анализ логических потоков

WebSSARY

Инкапсуляция SQL-запросов

SQLDOM, Safe Query Object

Методы обнаружения и

предотвращения SQL-инъекций

Использование систем обнаружения вторжений (IDS).

Системы, базирующиеся на машинном обучении, используя набор типичных запросов. Строятся типичные запросы и дальше отслеживается соответствие поступивших запросов с существующим набором. Основной минус – отсутствие гарантий обнаружения, так как успех зависит от обучающей выборки.

Рандомизация набора команд. SQLrand - служит основой,

которая позволяет разработчикам создавать вопросы, используя рандомизированные инструкции вместо нормальных ключевых слов SQL. Прокси-фильтры перехватывают запросы к базе и дерандомизируют ключевые слова. Следовательно не строятся запросы, вводимые злоумышленником. Основной минусиспользование ключа накладывает расходы на инфраструктуру, т к требуется интеграция прокси-сервера с БД.

Сравнение техник обнаружения

Сравнение техник предотвращения