// DevOps
Security.txt: Почтовый ящик для баг-репортов, о котором вы забыли
Опубликовано 30.03.2026
Представьте: этичный хакер находит на вашем сервере открытый .env файл или критическую уязвимость. Он не хочет вас взламывать — он хочет помочь. Он идет на сайт, ищет контакты и… упирается в стену. Форма обратной связи требует «номер заказа», чат-бот предлагает «выбрать категорию вопроса», а телефон техподдержки занят.
В итоге исследователь либо бросает это дело (и дыра остается), либо пишет об этом публично, создавая вам репутационный кризис на ровном месте.
Чтобы этого избежать, был принят стандарт RFC 9116 — файл security.txt. Это простой способ официально сказать миру: «Если вы нашли проблему, пишите сюда, мы вас услышим».
Что внутри?
Файл должен располагаться по адресу /.well-known/security.txt. Это текстовый UTF-8 формат, где каждая строка — отдельная директива.
- Contact (обязательно): Ссылка на email или форму. Важно использовать формат URI. Допускается несколько контактов.
Contact: mailto:security@example.comContact: https://example.com/security-form
- Expires (обязательно): Срок годности файла. По стандарту данные не должны считаться актуальными вечно. Рекомендуется обновлять его раз в год. Формат ISO 8601 (например,
2027-01-01T00:00:00Z). - Encryption: Ссылка на ваш публичный PGP-ключ. Это признак хорошего тона — давать возможность зашифровать отчет, чтобы детали уязвимости не перехватили по пути.
- Preferred-Languages: Список языков, на которых вашей команде удобнее читать отчеты (например,
ru, en). - Acknowledgments: Ссылка на страницу «Зала славы». Мелочь, которая отлично мотивирует исследователей — простое публичное «спасибо» за найденный баг.
- Policy: Пожалуй, самое важное поле. Это ссылка на вашу политику разглашения (VDP).
Vulnerability Disclosure Policy (VDP): Как не напугать людей
Поле Policy ведет на страницу, где вы описываете правила игры. Главная ошибка здесь — превратить страницу в сухой юридический документ, который запрещает всё на свете.
Хорошая политика должна отвечать на три вопроса:
1. Что можно тестировать? (Scope)
Если область (scope) размыта — исследователь либо не пишет вам, либо рискует. Четко укажите домены: example.com, api.example.com. Явно исключите то, что трогать нельзя: staging.example.com, панели администратора или сторонние интеграции (Stripe, Cloudflare).
2. Что запрещено? (Rules of Engagement)
Установите границы. Базово это запрет на:
- DoS / DDoS атаки.
- Социальную инженерию против сотрудников.
- Доступ к чужим данным или их удаление.
3. Что вы обещаете взамен? (Safe Harbor)
Это ключевой элемент доверия. Вы должны прямо заявить: «Мы не будем инициировать судебные разбирательства, если вы действуете в рамках этой политики и сообщаете об уязвимости ответственно».
Совет: Пишите человеческим языком. Фраза «Мы ценим ваш вклад и обязуемся ответить на отчет в течение 48 часов» работает гораздо лучше, чем десятистраничный отказ от ответственности.
Инструмент: securitytxt.org
Самостоятельно вымерять формат даты в ISO 8601 или следить за синтаксисом — лишняя трата времени. Для этого есть сервис securitytxt.org.
Это максимально простой генератор: вы заполняете поля, сервис проверяет их на соответствие стандарту и выдает готовый текст. Там же можно подготовить цифровую подпись (Cleartext Signature), чтобы гарантировать подлинность файла.
Техническая реализация
Просто создать файл — это полдела. Нужно, чтобы сервер отдавал его с правильными заголовками.
Настройка в Caddy
В Caddy можно прописать отдачу файла прямо в конфиге:
example.com {
handle_path /.well-known/security.txt {
header Content-Type "text/plain; charset=utf-8"
respond "Contact: mailto:security@example.com
Expires: 2027-03-30T10:00:00Z
Policy: https://example.com/security-policy
Preferred-Languages: ru, en"
}
}
Автоматизация через Ansible
Если у вас парк из десятка серверов, проще всего раскатать этот файл одной задачей:
- name: Ensure .well-known directory exists
file:
path: /var/www/html/.well-known
state: directory
mode: '0755'
- name: Deploy security.txt to all web nodes
copy:
dest: /var/www/html/.well-known/security.txt
content: |
Contact: mailto:security@example.com
Expires: 2027-12-31T23:59:59Z
Policy: https://example.com/security-policy
Preferred-Languages: ru, en
mode: '0644'
Итог
Security.txt — это не «защита от взлома». Это страховка от того, что о критической дыре вы узнаете последним. Настройка занимает 10 минут, но она переводит ваши отношения с сообществом безопасности из плоскости «враги и нарушители» в плоскость «партнеры».
Это правило хорошего тона для любого серьезного проекта в 2026 году.
// Reviews
Отзывы по теме
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. Результатом доволен.
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. …
Настройка vps, настройка сервера
18.02.2026 · ★ 5/5
Все было сделано быстро и четко. Рекомендую
Все было сделано быстро и четко. Рекомендую
Настройка vps, настройка сервера
17.01.2026 · ★ 5/5
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Настройка vps, настройка сервера
16.12.2025 · ★ 5/5
Все сделали оперативно. Будем и дальше обращаться. Рекомендую!
Все сделали оперативно. Будем и дальше обращаться. Рекомендую!
Настройка vps, настройка сервера
10.12.2025 · ★ 5/5
Все сделали оперативно. Михаил всегда на связи. Будем и дальше обращаться
Все сделали оперативно. Михаил всегда на связи. Будем и дальше обращаться
Настройка vps, настройка сервера
10.12.2025 · ★ 5/5
Михаил, профессионал! Уже ни первый раз показал это на практике.
Михаил, профессионал! Уже ни первый раз показал это на практике.
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
// Related