59.95K

Презентация

1.

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
Разработка системы защиты
от SQL-инъекций для вебприложений
Гибридная система SQL Guard для FastAPI + PostgreSQL:
whitelist · структурная валидация · rule-based · машинное обучение
ВЫПОЛНИЛ:
НАУЧНЫЙ РУКОВОДИТЕЛЬ:
Студент института точных наук и цифровых
технологий направления подготовки “ИВТ”
Сиротенко Глеб Александрович
Старший преподаватель Джемилев Александр Сергеевич

2.

01 · ВВЕДЕНИЕ
Актуальность и проблема
SQL-инъекции стабильно входят в OWASP Top 10.
Особенно уязвимы аналитические и административные
интерфейсы со сложными динамическими SQLзапросами, где параметризация неприменима.
Существующие подходы по отдельности не дают
баланса полноты обнаружения и низкого уровня ложных
срабатываний — нужен гибридный, многоуровневый
механизм защиты.
OWASP
TOP-10
SQL-инъекции — одна из наиболее
критичных угроз веб-приложений на
протяжении многих лет.
Контекст: система управления
заведениями общественного питания на
FastAPI + PostgreSQL.
SQL Guard · Защита от SQL-инъекций
2 / 13

3.

02 · ПОСТАНОВКА
Цель и задачи работы
ЦЕЛЬ
Разработка, программная реализация и экспериментальное обоснование эффективности гибридной
системы обнаружения и предотвращения SQL-инъекций для веб-приложений на PostgreSQL.
1
Проанализировать классификацию атак SQL-инъекций
и их последствия для PostgreSQL-приложений.
2
Сравнить существующие методы защиты:
параметризация, экранирование, сигнатурный анализ,
ML.
3
Сформулировать требования к системе обнаружения
5
Реализовать подсистему защиты в реальном веб-
и оперативной реакции.
приложении на FastAPI.
SQL Guard · Защита от SQL-инъекций
4
Спроектировать гибридную многоуровневую
6
Обучить ML-модель и экспериментально оценить
архитектуру SQL Guard.
эффективность гибридного подхода.
3 / 13

4.

03 · АНАЛИЗ
Классификация атак SQL-инъекций
Union-based
Boolean-based
Time-based
Объединение легитимного результата
Логические выражения (OR 1=1, AND
Задержки (pg_sleep) для определения
с произвольным запросом через UNION
1=0) для косвенного извлечения
истинности условия по времени
SELECT.
данных.
отклика.
Error-based
Stacked queries
Obfuscation
Получение данных через сообщения
Цепочка команд через «;»: INSERT,
Кодирование, обфускация и
об ошибках СУБД.
UPDATE, DROP.
комментарии для обхода сигнатур.
SQL Guard · Защита от SQL-инъекций
4 / 13

5.

04 · ОБЗОР
Существующие методы защиты
Метод
Преимущества
Ограничения
Параметризация
Надёжная защита для типового CRUD; широкая
поддержка в драйверах и ORM.
Неприменима к динамическим идентификаторам,
ORDER BY, WITH-конструкциям.
Экранирование
Простота для отдельных полей; быстрое снижение
риска.
Ложное чувство безопасности; не работает
против обфускации.
Rule-based
Высокая интерпретируемость; низкая
вычислительная стоимость.
Чувствителен к обфускации; не распознаёт
неизвестные шаблоны.
ML-подходы
Обнаружение zero-day и обфусцированных атак;
гибкий порог.
Зависит от качества датасета; ниже
интерпретируемость.
RLS, роли, привилегии
Снижает ущерб; defence-in-depth независимо от
приложения.
Не предотвращает саму уязвимость в
приложении.
Ни один метод по отдельности не решает задачу полноты и точности → нужен гибридный подход.
SQL Guard · Защита от SQL-инъекций
5 / 13

6.

05 · ПРОЕКТИРОВАНИЕ
Архитектура SQL Guard — конвейер защиты
SQL-запрос
1
Whitelist
2
Структурная
валидация
3
4
5
Rule-based
ML-слой
Решение
Быстрый allow
Длина, кавычки,
Сигнатуры
TF-IDF n-gram +
Allow / Block
для шаблонов
NUL-символы
и ключевые слова
лог. регрессия
+ аудит
КЛЮЧЕВЫЕ ПРИНЦИПЫ
Fail-closed
Интерпретируемость
Аудит
Defence-in-depth
при ошибке — блокировка
причина и слой блокировки
журнал всех решений
RLS как дополнительный слой
SQL Guard · Защита от SQL-инъекций
6 / 13

7.

06 · РЕАЛИЗАЦИЯ
Уровни защиты в деталях
01
Whitelist + нормализация
Регулярные выражения для тривиально безопасных запросов: SELECT, SELECT…FROM…WHERE, WITH…AS, EXPLAIN.
Совпавшие запросы сразу пропускаются, снижая нагрузку на конвейер.
02
Структурная валидация
Контроль максимальной длины (защита от фаззинга/DoS), запрет NUL и управляющих символов (\x00, \x1a), ограничение
числа кавычек — индикатор массовой инъекции.
03
Rule-based анализатор
Нормализация (удаление комментариев, пробелов, нижний регистр) и сопоставление с опасными паттернами и
запрещёнными ключевыми словами. Возвращает конкретную причину блокировки.
04
ML-классификатор
TF-IDF на символьных n-граммах (n=3..5) + статистические признаки + логистическая регрессия. Адаптивный порог: при
подозрительных эвристиках применяется strict_threshold.
SQL Guard · Защита от SQL-инъекций
7 / 13

8.

07 · МАШИННОЕ ОБУЧЕНИЕ
ML-слой — признаки и обучение модели
ДАТАСЕТ
Размеченный корпус из легитимных аналитических
МОДЕЛЬ
SQL-запросов и образцов известных инъекций.
Логистическая регрессия
Стратифицированное разбиение train/test = 0.8 / 0.2.
Интерпретируемая, быстрая, устойчивая на разреженных
n-gram признаках.
ПРИЗНАКИ

TF-IDF на символьных n-граммах (n = 3..5)

Статистические признаки: длина запроса, доля
ВАЛИДАЦИЯ
Стратифицированная кросс-валидация по F1, ROC-AUC,
PR-AUC и MCC.
спец-символов, цифр и кавычек

Эвристические индикаторы (#, --, кавычки)
ПОРОГИ
threshold = 0.7367 (основной)
strict_threshold = 0.65 (при эвристиках)
SQL Guard · Защита от SQL-инъекций
8 / 13

9.

08 · ОЦЕНКА
Результаты эксперимента — высокое качество
МЕТРИКИ НА ТЕСТОВОЙ ВЫБОРКЕ (N = 6182)
0.9943
0.9921
0.9932
0.9996
Precision
Recall
F1-score
ROC-AUC
Стратифицированная кросс-валидация:
precision 0.9966 · recall 0.9946 · f1 0.9956 · ROC-AUC 0.9997
МАТРИЦА КЛАССИФИКАЦИИ
precision
recall
f1-score
support
Класс 0 — легитимные
1.00
1.00
1.00
3 906
Класс 1 — инъекции
0.99
0.99
0.99
2 276
SQL Guard · Защита от SQL-инъекций
9 / 13

10.

09 · АНАЛИЗ
Интерпретация модели и выбор порога
ТОП-ПРИЗНАКИ КЛАССА «ИНЪЕКЦИЯ»
ВЫБОР ПОРОГА
num_special_chars
Оптимум F1 на диапазоне 0.65–0.73
На графике зависимости Precision / Recall / F1 от порога
1'
принятия решения наблюдается типичный компромисс.
Низкий порог → высокая полнота, низкая точность;
or
высокий порог → наоборот.
)
Принятые значения:
has_#
threshold = 0.7367
strict_threshold = 0.65
Чем выше столбик — тем сильнее признак повышает оценку
«инъекция».
SQL Guard · Защита от SQL-инъекций
10 / 13

11.

10 · ОБСУЖДЕНИЕ
Гибридный подход vs изолированные методы
ПРЕИМУЩЕСТВА ГИБРИДА
ОГРАНИЧЕНИЯ
Сбалансированное соотношение точности и полноты
Качество детекции зависит от обучающего датасета и
на данных, приближённых к реальной эксплуатации.
его репрезентативности.
Whitelist и rule-based — быстрые объяснимые решения;
Ложные срабатывания на редкие, но легитимные
ML — устойчивость к новым и обфусцированным
аналитические запросы.
атакам.
Fail-closed и аудит — снижение риска при сбоях и
Сильно обфусцированные и second-order атаки —
упрощение расследования инцидентов.
основные источники пропусков.
Интеграция в FastAPI-приложение без изменений
Накладные расходы ML при пиковой нагрузке требуют
основной бизнес-логики.
дальнейшей оптимизации.
SQL Guard · Защита от SQL-инъекций
11 / 13

12.

11 · ВЫВОДЫ
Заключение и направления развития
ДОСТИГНУТЫЕ РЕЗУЛЬТАТЫ
1
Спроектирована и реализована гибридная многоуровневая система SQL Guard для FastAPI + PostgreSQL.
2
Подготовлен датасет, обучена и валидирована ML-модель: F1 ≈ 0.993, ROC-AUC ≈ 0.9996.
3
Подтверждена практическая применимость: интеграция без изменений основной бизнес-логики приложения.
4
Обеспечен fail-closed-режим, интерпретируемые блокировки и подробный аудит.
НАПРАВЛЕНИЯ ДАЛЬНЕЙШЕГО РАЗВИТИЯ
Автоматизация дообучения модели · расширение контекстных правил · оптимизация производительности под пиковую
нагрузку · адаптация подхода к другим СУБД.
SQL Guard · Защита от SQL-инъекций
12 / 13

13.

Спасибо за внимание
Готов ответить на вопросы.
Разработка системы защиты от SQL-инъекций
для веб-приложений на PostgreSQL · ВКР · 2026
English     Русский Правила