meraocenka.ru — публичный B2C-домен, не отдавал ни HSTS, ни защиту от
встраивания во фрейм, ни X-Content-Type-Options/Referrer-Policy.
Добавлен блок header: HSTS на 180 суток (без includeSubDomains/preload —
оба флага практически необратимы, не все поддомены под контролем),
X-Frame-Options: DENY + CSP frame-ancestors 'none' (старые клиенты +
современный механизм), nosniff, strict-origin-when-cross-origin, плюс
снятие Server/X-Powered-By. Полноценный CSP (default-src/script-src) —
отдельная работа, здесь только периметр вокруг фрейма. Next.js
(tradein-mvp/frontend) эти заголовки не выставляет — дублирования нет.
handle_path /preview/* отдавал листинг каталога (file_server browse).
Публичность самих макетов намеренная и задокументирована — убран только
листинг, файлы по прямой ссылке продолжают отдаваться.
Проверено: caddy validate --config apps.caddy --adapter caddyfile → Valid
configuration (до и после правки, с учётом относительных import вида
../users.caddy.snippet — apps.caddy валиден только при монтировании
родительского caddy/, не caddy/sites/ отдельно).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG