Дипломный проект по ИБ: идеи и реализация заданий для сайта
Вы сменили специальность на информационную безопасность (ИБ) и хотите адаптировать дипломный проект - сайт для программистов (как Codewars) под новую тематику. Это отличная идея, но важно правильно наполнить платформу контентом, связанным с кибербезопасностью. Разберём, какие задания можно добавить, как реализовать проверку решений и насколько сложно внедрить новые функции.
Какие задания по ИБ можно добавить на сайт?
Ваш проект уже поддерживает выполнение кода на Python, JavaScript, TypeScript, Ruby, PHP. Для Java, C/C++ потребуется настройка WSL - это реализуемо, но займёт время. Вот несколько типов задач, которые подойдут для диплома по ИБ:
- Поиск и исправление уязвимостей - пользователь получает фрагмент кода с ошибкой (например, SQL-инъекция или XSS) и должен найти уязвимое место и предложить корректный фикс. Проверка может быть как автоматической (сравнение с эталоном), так и ручной (через тесты).
- SQL-инъекции - задание, где нужно написать запрос, который обходит аутентификацию или извлекает скрытые данные. Реализуется через изолированную базу данных (например, SQLite в памяти), чтобы избежать рисков.
- XSS (межсайтовый скриптинг) - пользователю даётся HTML-страница с формой, и он должен ввести скрипт, который отразится на странице. Проверка - через эмуляцию браузера (например, Puppeteer) или анализ введённого кода.
- Криптографические задачи - расшифровка сообщения, взлом простого шифра (Цезарь, XOR), реализация алгоритмов хеширования.
- Сетевые атаки - анализ пакетов (pcap-файлы), поиск уязвимостей в протоколах (например, перехват токенов).
Как реализовать проверку решений без риска для сервера?
Главная проблема - безопасность. Если пользователь может выполнить произвольный код, это угроза для вашего сервера. Рекомендуется изолировать выполнение в контейнерах Docker или использовать песочницу (sandbox). Например, для Python можно применить библиотеку PyPy или subprocess с ограничением времени и памяти. Для JavaScript - Node.js в изолированном процессе. Для SQL-инъекций используйте временную базу данных, которая уничтожается после проверки.
Тесты с выбором ответа и страница обучения
Вы упомянули тесты типа «Выберите правильные ответы» - это отличный способ охватить теорию ИБ. Можно сделать модули по темам: OWASP Top 10, криптография, безопасность сетей, политики доступа. Страница обучения должна содержать краткие конспекты и ссылки на задания. Такой подход повышает образовательную ценность проекта.
Технические сложности и их решение
Самые трудоёмкие моменты - это интеграция проверки кода на Java/C++ и создание двойного сервера (прокси) для компрометации промежуточных запросов. Для двойного сервера можно использовать MitM-прокси (например, mitmproxy) в демонстрационных целях - это позволит показать, как перехватываются данные. Но такой функционал требует осторожности: не давайте пользователям реальный доступ к прокси, только эмулируйте сценарий.
Вывод
Для диплома по ИБ достаточно добавить 3-4 типа заданий: поиск уязвимостей, SQL-инъекции, XSS и криптографические головоломки. Используйте Docker для изоляции кода, чтобы обезопасить сервер. Тесты с выбором ответа и страница обучения дополнят проект. Java и C++ можно внедрить через WSL, но это потребует дополнительной отладки. Помните, что главное - безопасность вашей платформы и образовательная ценность для пользователей.