📘 О чем эта работа
В работе проведён детальный разбор уязвимостей типичного веб‑приложения: выявлены SQL‑инъекции в WHERE и в форме логина, командная инъекция через параметр cmd, небезопасное хранение паролей в cookie, открытые ошибки БД, проблемы с сессиями и проверкой JWT. Объектом исследования служит тестовое приложение и набор лабораторных сценариев, предмет — уязвимости и способы их устранения в коде сервера.
📚 Что внутри
Материал содержит реальные примеры уязвимостей и их эксплуатацию, примеры payload'ов и готовые исправления:
- Разбор SQL‑инъекций: показано использование подстановки 'OR 1=1' для обхода поиска и авторизации, иллюстрации (Рисунок 1–6) и текстовые пояснения.
- Лабораторные кейсы (Лаб1–Лаб5) с целями: вывести скрытые данные, обойти логин, получить доступ к админке, подделать JWT (alg=none), получить чужие ресурсы через IDOR.
- Проблемы хранения сессий: пример небезопасной куки 'fmt.Sprintf("%s|%s", username, password)' и рекомендации по замене на токены.
- Исправленный код на Go: показан сервер с использованием prepared statements (db.QueryRow("SELECT id FROM users WHERE username=$1 AND password=$2", …)), генерацией sessionToken, установкой куки с HttpOnly, Secure, SameSiteStrictMode и Expires: time.Now().Add(2 * time.Hour).
- Командная инъекция: пример уязвимого вызова exec.Command("sh", "-c", cmd). Пояснены методы устранения — удаление возможности выполнять произвольные команды и применение whitelist.
- Практические инструкции: логирование ошибок вместо вывода технических сообщений пользователю, проверка ролей на сервере, обязательная валидация входных данных (например, len(username) > 3) и проверка подписи JWT (запрет alg=none).
📊 Для кого подходит
Материал полезен студентам и практикам по информационной безопасности, разработчикам бэкенда на Go, преподавателям для демонстрации уязвимостей и быстрого получения лабораторных результатов по темам SQL‑инъекций, CSRF, XSS, JWT и IDOR.
✨ Особенности
Работа объединяет теорию и практику: 5 лабораторных сценариев с наглядными результатами (рисунки 1–17), уязвимые фрагменты кода и полный исправленный пример сервера на Go. В тексте указаны конкретные точки фикса с примерами вызовов (db.QueryRow с $1/$2, http.SetCookie с флагами) и явные payload'ы (OR 1=1, alg=none).
❓ Частые вопросы
Подойдет ли для моего ВУЗа?
Структура лабораторных кейсов и практические примеры соответствуют стандартным требованиям по дисциплинам «Информационная безопасность» и «Безопасность веб‑приложений».
Можно адаптировать?
Да. Исправленный код и рекомендации легко адаптируются под реальные проекты: заменить генерацию токена на криптографически безопасный случайный генератор, хранить sessionToken в таблице sessions, добавить проверку роли при доступе к админ‑эндпоинтам.
Заключение
Работа даёт готовый набор доказательств уязвимостей и конкретные правки: подготовленные выражения для предотвращения SQL‑инъекций, отказ от хранения паролей в cookie в пользу токенов, корректная установка флагов cookie, отключение /debug‑эндпойнта, запрет alg=none для JWT и серверную проверку прав доступа. Это практическое руководство для быстрой минимизации критичных рисков в веб‑приложениях.