SecurityHeaderFilter.javaServlet-фильтр, добавляющий HTTP-заголовки безопасности к каждому HTTP-ответу. 76 строк. Реализует jakarta.servlet.Filter (бывший javax.servlet.Filter — миграция Jakarta EE 9 в коммите 77bade6df). Javadoc ссылается на статью AppCanary о HTTP security headers. Защищает от XSS, clickjacking, MIME-sniffing, DNS-prefetch атак.
| Заголовок | Описание |
|---|---|
X-XSS-Protection: 1; mode=block | Включает встроенный XSS-фильтр браузера. mode=block — вместо фильтрации, браузер полностью блокирует страницу при обнаружении атаки |
X-DNS-Prefetch-Control: off | Отключает предварительный DNS-резолвинг. Безопасность: предотвращает утечку информации о внутренних хостах через DNS-запросы |
X-Frame-Options: SAMEORIGIN | Запрещает встраивание страницы в iframe с других доменов. Защита от clickjacking: SAMEORIGIN разрешает iframe только с того же домена |
X-Content-Type-Options: nosniff | Запрещает браузеру "угадывать" MIME-тип. Без nosniff браузер может интерпретировать безобидный текстовый файл как исполняемый скрипт (MIME-sniffing атака) |
Content-Security-Policy (+ X-Content-Security-Policy, X-WebKit-CSP) | CSP (Content Security Policy) — самый мощный заголовок. Ограничивает источники скриптов, стилей, изображений. Значение загружается из конфигурации сервлета (init-param "csp") |
В отличие от остальных четырёх (жёстко закодированы), CSP загружается из конфигурации через filterConfig.getInitParameter("csp"). Значение задаётся в web.xml (или в WebXMLInitializer). Если параметр не задан — заголовок не добавляется. Это позволяет администратору настроить CSP под конкретный deployment. Два fallback-заголовка (X-Content-Security-Policy для старых Firefox, X-WebKit-CSP для старых Chrome/Safari) добавляются для обратной совместимости.
Файл практически не менялся с создания — только обновления копирайта и миграция javax.* → jakarta.*. Это один из самых стабильных файлов в проекте — security headers стандартизированы и редко требуют изменений.
868d6abb7 2025 -> 2026 63081666f Source file headers: 2024-> 2025. 77bade6df javax.* -> jakarta.* b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 ceb63e8a1 Source code header: (C) 2001-2021. 7c79f1922 Copyright of source header -> 2020. 32f634b88 Optimize imports dd5ca38ac CopyRight of all java file-header updated or created.