chore(caddy): security headers для meraocenka.ru + отключение browse в /preview #3519
1 changed files with 35 additions and 2 deletions
|
|
@ -184,10 +184,13 @@ gendsgn.ru {
|
|||
}
|
||||
|
||||
# Static HTML mockups для review (audit alternatives).
|
||||
# Public access — без auth (по запросу 2026-05-17).
|
||||
# Public access — без auth (по запросу 2026-05-17) — это намеренно и
|
||||
# менять НЕ надо. Но каталог не должен листингом отдавать список
|
||||
# файлов случайному посетителю: без `browse` file_server продолжает
|
||||
# отдавать сами файлы по прямой ссылке, просто без index-листинга.
|
||||
handle_path /preview/* {
|
||||
root * /srv/preview
|
||||
file_server browse
|
||||
file_server
|
||||
}
|
||||
|
||||
# Trade-In UI preview — public CI surface (#801). Рендерит mock-фикстуру
|
||||
|
|
@ -400,6 +403,36 @@ www.gendsgn.ru {
|
|||
meraocenka.ru {
|
||||
encode zstd gzip
|
||||
|
||||
# #3471 (security-headers follow-up): публичный B2C-домен без базовых
|
||||
# security-заголовков. Позиция директивы в файле не важна — Caddyfile
|
||||
# применяет директивы в фиксированном порядке (`header` идёт раньше
|
||||
# `reverse_proxy`), не по строке в исходнике.
|
||||
#
|
||||
# Проверено: ни tradein-mvp/frontend (обслуживает этот домен, отдаёт
|
||||
# `/trade-in/mera-public*`), ни его next.config.ts/middleware не
|
||||
# выставляют ни один из этих заголовков — дублирования нет.
|
||||
header {
|
||||
# 180 суток (15552000s). НЕ ставить includeSubDomains и НЕ ставить
|
||||
# preload — оба флага практически необратимы (браузеры кэшируют
|
||||
# preload-список надолго, includeSubDomains ломает любой будущий
|
||||
# HTTP-поддомен), а не все поддомены meraocenka.ru гарантированно
|
||||
# под нашим контролем. Если это когда-нибудь понадобится — отдельное
|
||||
# осознанное решение, не «улучшение по умолчанию».
|
||||
Strict-Transport-Security "max-age=15552000"
|
||||
# Запрет встраивания во фрейм: X-Frame-Options — для старых
|
||||
# клиентов, которые не понимают CSP; frame-ancestors — современный
|
||||
# механизм. Оба вместе, не один вместо другого.
|
||||
X-Frame-Options "DENY"
|
||||
Content-Security-Policy "frame-ancestors 'none'"
|
||||
X-Content-Type-Options "nosniff"
|
||||
Referrer-Policy "strict-origin-when-cross-origin"
|
||||
# Не даём стеку светиться в ответе. Полноценный CSP
|
||||
# (default-src/script-src/...) сюда намеренно НЕ входит — отдельная
|
||||
# работа с риском сломать фронт, здесь только периметр вокруг фрейма.
|
||||
-Server
|
||||
-X-Powered-By
|
||||
}
|
||||
|
||||
log {
|
||||
output file /var/log/caddy/meraocenka.ru.log
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue