Проект демонстрирует разработку защищённого REST API на Spring Boot 3 / Java 17 с аутентификацией по JWT.
Включает меры защиты от распространённых веб-уязвимостей, а также автоматическую проверку кода
через GitHub Actions
Регистрация нового пользователя.
Request body:
{
"username": "newuser",
"password": "secret"
}Response 201:
{
"message": "User registered successfully",
"token": "<JWT токен>"
}Авторизация существующего пользователя.
Request body:
{
"username": "newuser",
"password": "secret"
}Response 200:
{
"token": "<JWT токен>"
}Эндпоинт требует Token в заголовке Authorization.
Возвращает список всех зарегистрированных пользователей:
Headers:
Authorization: Bearer <JWT токен>
Response 200:
[
{
"id": 1,
"username": "user1"
},
{
"id": 2,
"username": "user2"
}
]- Используется Spring Data JPA, который генерирует подготовленные SQL-запросы.
- Все параметры подставляются через bind-переменные, что исключает инъекции.
-
Все возвращаемые имена пользователей экранируются:
StringEscapeUtils.escapeHtml4(t.getUsername())
что предотвращает внедрение HTML/JS кода в ответах.
-
Авторизация через JWT токен:
-
При регистрации или входе генерируется токен (
JwtUtil.generateToken). -
Доступ к защищённым ресурсам только с валидным токеном в заголовке:
Authorization: <token>
-
-
Секретный ключ хранится в конфигурации и используется для подписи и валидации.
-
Используется валидация входных данных (
@Valid+ Bean Validation).
В репозитории настроен workflow GitHub Actions:
- SpotBugs (SAST) — статический анализ кода.
- OWASP Dependency-Check (SCA) — анализ зависимостей на наличие уязвимостей.

