📚 Теория: H2 Console (раскрыть)
Опасность
H2 web-консоль предоставляет SQL-доступ к базе. В проде это означает полный контроль над данными.
⚠️ Можно читать/модифицировать таблицы, проводить SSRF.
Лучшие практики
Включай консоль только в dev, ограничивай IP, используй пароль и Spring Security, либо убери вовсе.
🔐 `spring.h2.console.enabled=false` в prod профиле.
GET /h2-console/ открывает форму логина.
Атакующий логинится с дефолтным JDBC URL и доступом без пароля.
Получает данные пользователей, токены, делает DROP TABLE.
Как надо: отключай H2 console в боевом профиле, используй отдельный dev-profile, ставь firewall и тесты, которые гарантируют, что консоль недоступна.
Контекст
Во время миграции команда включила H2 console «для дебага» и забыла убрать. Конфиг prod наследует параметры по умолчанию и оставляет консоль доступной.
- Найди строку, где `spring.h2.console.enabled=true` в prod.
- Рекомендуй выключить консоль, ограничить профили, добавить пароль/Basic Auth.
- Подумай о тестах: health-check должен получить 404/401 на `/h2-console`.
Конфигурация
Code Review
Референс-исправление
H2 console должна работать только локально. Используй профили и защиту.
Флаг ревью: FLAG{java-h2-console}
spring.h2.console.enabled=false
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false
Предложи dev-профиль с включённой консолью, Basic Auth и smoke-тесты, проверяющие, что `/h2-console` недоступен в проде.
Проверка флага
После ревью зафиксируй флаг, чтобы дашборд засчитал лабораторию.