Генератор security.txt
Генератор security.txt
Вывод в соответствии с RFC 9116, готовый для развертывания по пути /.well-known/security.txt.
Укажите Canonical URL вашего security.txt, чтобы предотвратить подделку на других путях
Создавайте онлайн-файлы security.txt, соответствующие стандарту RFC 9116, предоставляя исследователям безопасности официальный канал отчетности об уязвимостях. Предпросмотр в реальном времени, копирование в один клик, разверните напрямую в /.well-known/security.txt для вступления в силу.
Похожие
О security.txt: Полное руководство по стандартам раскрытия безопасности веб-сайтов
security.txt — это лучшая практика веб-безопасности, официально стандартизированная IETF (Internet Engineering Task Force) в RFC 9116, разработанная для предоставления сайтам унифицированного, стандартного способа публикации контактной информации безопасности. Проще говоря, это текстовый файл, размещенный по фиксированному пути на сайте, говорящий исследователям безопасности (хакерам white hat): «Если вы обнаружите уязвимости безопасности на моем сайте, вот как с нами связаться, вот наш открытый ключ шифрования, вот наша политика раскрытия, и мы приветствуем ваши отчеты».
До появления стандарта security.txt контактная информация безопасности сайтов была хаотичной. Некоторые сайты вообще не имели контактной информации безопасности, некоторые прятали ее на какой-то неясной странице, некоторые указывали только необслуживаемый адрес электронной почты info@, а некоторые требовали кропотливого поиска в LinkedIn, чтобы найти команду безопасности. Это вызвало серьезную проблему: когда добросовестные исследователи безопасности обнаруживали уязвимости, они часто не могли найти правильный канал для их сообщения. Результатом было — многие уязвимости молча откладывались на полку, оставлялись неисправленными, пока не были обнаружены и эксплуатированы злонамеренными хакерами. security.txt родился, чтобы решить эту проблему «последней мили».
Концепция security.txt была впервые предложена исследователями безопасности EdOverflow и Yakov Shafranovich в 2017 году и быстро получила широкую поддержку отрасли. В апреле 2022 года security.txt был официально утвержден IETF как RFC 9116, став международно признанным стандартом веб-безопасности. Сегодня крупные технологические компании, такие как Google, GitHub, Meta (Facebook), LinkedIn и Cloudflare, а также государственные учреждения, включая правительство Великобритании, CISA США (Агентство по кибербезопасности и защите инфраструктуры), правительство Франции, правительство Италии, правительство Нидерландов и Австралийский центр кибербезопасности, развернули security.txt на своих официальных сайтах и публично рекомендуют другим организациям принять его.
Основная конструкция файла security.txt очень проста — это обычный текстовый файл, состоящий из строк в формате «имя-поля: значение», аналогично формату заголовка HTTP. Стандарт определяет два обязательных поля: Contact (контактная информация безопасности, которая может быть множественной) и Expires (время истечения файла); а также несколько необязательных полей: Encryption (URL открытого ключа шифрования PGP), Acknowledgments (URL страницы благодарностей), Policy (URL политики раскрытия уязвимостей), Hiring (URL вакансий безопасности), Canonical (канонический URL файла), Preferred-Languages (поддерживаемые языки отчетов) и CSAF (URL метаданных поставщика Common Security Advisory Framework). Этот простой формат облегчает анализ как людям, так и машинам.
Почему развертывание security.txt так важно? Во-первых, оно снижает барьер для отчетности об уязвимостях. Исследователям безопасности не нужно тратить значительное время на поиск контактной информации — они могут найти правильный канал отчетности в один клик. Во-вторых, это демонстрирует упреждающее отношение организации к безопасности — сайт с security.txt по сути говорит: «Мы серьезно относимся к безопасности и приветствуем ответственные отчеты». В-третьих, это снижает риск публичного раскрытия или эксплуатации уязвимостей: имея официальный канал, исследователи не будут выбирать публичное раскрытие уязвимостей напрямую в Twitter или GitHub, потому что не смогут ни с кем связаться. В-четвертых, во многих отраслевых регуляторных требованиях (например финансы, здравоохранение, правительство) создание канала раскрытия уязвимостей стало требованием соответствия.
При развертывании security.txt следует обратить внимание на несколько ключевых деталей. Во-первых, путь должен быть правильным: стандартный путь — /.well-known/security.txt, и вы также можете разместить копию в /security.txt в корневом каталоге в качестве запасного варианта. Каталог .well-known здесь — это стандартный каталог «хорошо известных ресурсов», определенный RFC 8615, где другие стандартные файлы, такие как robots.txt, также размещаются в связанных местоположениях. Во-вторых, он должен обслуживаться по HTTPS — простой HTTP считается небезопасным. В-третьих, Content-Type должен быть text/plain, а не text/html или другими типами. В-четвертых, не выполняйте междоменные перенаправления для security.txt — если https://example.com/.well-known/security.txt перенаправляет на https://другой-домен.com/security.txt, исследователи и автоматизированные инструменты сочтут это подозрительным. В-пятых, не забывайте устанавливать поле Expires и регулярно его обновлять; истекший security.txt будет считаться имеющим ненадежную информацию.
Поле Contact — самое важное поле в security.txt и единственное по-настоящему необходимое поле (Expires также обязательное, но это просто метка времени). Contact поддерживает три формата URI: mailto: для адресов электронной почты, https:// для веб-ссылок (например страниц форм отчетности по безопасности) и tel: для номеров телефонов. Настоятельно рекомендуется предоставить как минимум один адрес электронной почты mailto и одну ссылку на форму https — формы предотвращают спам от ботов, в то время как электронная почта более удобна для исследователей для прямой отправки зашифрованных отчетов. Несколько контактов могут быть перечислены в нескольких строках, например одновременно предоставляя адрес электронной почты команды безопасности, адрес электронной почты руководителя безопасности и ссылки на сторонние платформы уязвимостей.
Хотя поле Encryption необязательное, на практике оно очень важно. Когда исследователи безопасности обнаруживают критическую уязвимость (такую как утечка данных пользователя или удаленное выполнение кода), они абсолютно не хотят отправлять сведения об уязвимости в электронном письме в открытом виде — потому что электронная почта проходит через несколько серверов во время передачи, любой узел может быть подслушан. Шифрование открытым ключом PGP (Pretty Good Privacy) является отраслевым стандартом безопасной связи. Вам нужно только сгенерировать пару ключей PGP, разместить открытый ключ на своем сайте (например по адресу /.well-known/pgp-key.txt) и ввести этот URL в поле Encryption. Исследователи шифруют контент отчета вашим открытым ключом, и только те, кто владеет соответствующим закрытым ключом, могут его расшифровать и прочитать.
Поле Policy связывается с вашей страницей Политики раскрытия уязвимостей (Vulnerability Disclosure Policy, VDP), которая является ключом к построению доверия исследователей. Хорошая VDP должна четко указывать: область тестирования (какие системы входят в область тестирования и какие — вне области), разрешенные методы тестирования (например тестирование SQL injection/XSS разрешено, но DDoS/социальная инженерия/доступ к реальным данным пользователей запрещены), гарантированные времена реакции (например «Мы подтвердим получение отчетов в течение 3 рабочих дней»), предлагаются ли вознаграждения и обязательства по правовой безопасной гавани (четко указывающие о непреследовании добросовестных исследователей, соблюдающих правила). Существует множество шаблонов VDP, доступных на международном уровне для справки, и CISA США также предоставляет шаблон VDP с открытым исходным кодом.
Помимо самого контакта безопасности, у security.txt есть несколько «неожиданных» полей. Поле Acknowledgments создает Зал славы безопасности — публично благодаря исследователей, которые помогают вам находить уязвимости, что признает их работу, а также служит построению сообщества. Поле Hiring — очень умный дизайн: люди, которые могут находить уязвимости на вашем сайте, по своей сути являются отличными талантами в области безопасности, и размещение ссылки на набор в security.txt — это наиболее точный канал набора талантов в области безопасности. Многие компании наняли отличных инженеров по безопасности через security.txt. Поле Canonical — это соображение безопасности — предотвращение подделки злоумышленниками вашего security.txt в других доменах.
Что касается распространенного беспокойства о спаме, на практике большинство организаций, развернувших security.txt, сообщают о незначительном увеличении спама. Это происходит потому, что: во-первых, спамеры обычно не получают адреса электронной почты путем сканирования security.txt; во-вторых, ссылки на формы https:// можно использовать вместо прямого размещения электронных писем mailto, и добавление CAPTCHA к формам может полностью блокировать ботов; в-третьих, выделенные электронные письма безопасности (например security@) обычно имеют строгую фильтрацию спама, настроенную. Напротив, стоимость пропуска критических отчетов об уязвимостях из-за отсутствия канала контактов безопасности намного перевешивает потенциальное увеличение небольших количеств спама.
Этот генератор создан в строгом соответствии со стандартом RFC 9116, и все форматы вывода нормализованы: поле Contact автоматически распознает префиксы, поле Expires использует стандартный формат времени UTC ISO 8601, а Preferred-Languages автоматически устанавливается на основе языка, который вы используете. Сгенерированный контент можно напрямую скопировать и развернуть по пути /.well-known/security.txt без каких-либо модификаций. Кроме того, вся конфигурация выполняется локально в вашем браузере и никогда не отправляется ни на какой сервер — ваша контактная информация безопасности всегда остается на вашем устройстве. Развертывание security.txt занимает всего 5 минут, но канал коммуникации по безопасности, который он создает, может помочь вам избежать серьезного инцидента безопасности в будущем.
Варианты использования
- Создание официальных каналов отчетности об уязвимостях для корпоративных сайтов, SaaS-платформ и сайтов электронной коммерции путем настройки адресов электронной почты Contact и страниц политики безопасности Policy
- Публикация URL-адресов открытых ключей шифрования PGP, чтобы исследователи безопасности могли шифровать отправки конфиденциальных сведений об уязвимостях, предотвращая перехват информации об уязвимостях при передаче в открытом виде
- Установка URL-адресов страницы Зала славы безопасности Acknowledgments для публичной благодарности исследователям, сообщающим об уязвимостях, укрепляя доверие в сообществе безопасности
- Настройка ссылок на вакансии в сфере безопасности Hiring для упреждающего демонстрации информации о найме команды исследователям безопасности и хакерам white hat, привлекая таланты в области безопасности
- Установка меток времени истечения Expires, чтобы напоминать командам регулярно пересматривать и обновлять контактную информацию безопасности, предотвращая недоступность контактов из-за устаревшей информации, которая оставляет уязвимости не сообщенными
- Настройка полей Canonical для объявления канонического URL вашего файла security.txt, предотвращая подделку злоумышленниками вредоносного контента security.txt, вводящего исследователей в заблуждение
- Удовлетворение требований Политики раскрытия уязвимостей (VDP) для сайтов с высокими требованиями соответствия в государственном, финансовом и медицинском секторах в соответствии с лучшими отраслевыми регуляторными практиками
- Быстрая настройка точек входа контактов безопасности для проектов с открытым исходным кодом, личных блогов и API-сервисов, демонстрируя серьезное отношение к вопросам безопасности
Как использовать
- Заполните адреса электронной почты или URL-адреса контактов безопасности в разделе Contact (один на строку, поддерживается несколько строк; email требует префикса mailto:, URL-адреса веб-сайтов требуют префикса https://)
- Настройте необязательные поля по мере необходимости: Encryption (URL открытого ключа PGP), Acknowledgments (страница Зала славы), Policy (страница политики раскрытия уязвимостей), Hiring (страница вакансий безопасности), Canonical (канонический URL файла) и т.д.
- Установите время истечения Expires (время UTC в формате ISO 8601, например 2027-12-31T23:59:59Z; рекомендуемая настройка — 6–12 месяцев в будущем)
- Просмотрите сгенерированный контент в реальном времени справа; после подтверждения правильности формата нажмите кнопку копирования
- Создайте папку .well-known в корневом каталоге вашего сайта и сохраните контент как security.txt внутри нее
- Настройте ваш веб-сервер (Nginx/Apache/Caddy и т.д.), чтобы обеспечить доступ через https://ваш-домен/.well-known/security.txt с установленным Content-Type text/plain
Функции
- Строго соответствует последнему стандарту RFC 9116: формат вывода полностью совместим и готов к развертыванию в производственной среде
- Поддержка нескольких контактов Contact: одна запись на строку; email (mailto:), URL веб-сайта (https://) и телефон (tel:) могут быть объявлены независимо
- Полное покрытие полей: обязательные поля Contact и Expires плюс все необязательные поля, включая Encryption, Acknowledgments, Policy, Hiring, Canonical и Preferred-Languages
- Генерация предпросмотра в реальном времени: контент security.txt обновляется мгновенно при изменении любой конфигурации — WYSIWYG, кнопка генерации не требуется
- Автоматическое объявление языка: автоматически добавляет поле Preferred-Languages на основе текущего языка страницы для облегчения отчетности международными исследователями безопасности
- Формат времени ISO 8601: поле Expires использует стандартный формат времени UTC, соответствующий последним спецификациям RFC
- Проверка формата полей: автоматически проверяет префиксы Contact (mailto:/https:/tel:) и формат времени Expires для предотвращения недействительного вывода
- Копирование в один клик: нажмите, чтобы скопировать полный контент в буфер обмена — вставьте и разверните немедленно
- Встроенные шаблоны примеров: предварительно заполнены примерным форматом, поэтому вы можете быстро заменить своей информацией вместо начала с нуля
- Чисто локальная работа на фронтенде: конфигурация обрабатывается локально в вашем браузере и никогда не отправляется ни на какой сервер
- Руководство по пути развертывания: после генерации показывает стандартный путь развертывания /.well-known/security.txt и ключевые моменты конфигурации веб-сервера
- Без водяных знаков: сгенерированные файлы не содержат водяных знаков или ограничений, подходят для непосредственного использования на коммерческих сайтах
Часто задаваемые вопросы
Что такое файл security.txt? Зачем моему сайту он нужен?
security.txt — это стандарт веб-безопасности, определенный IETF в RFC 9116, разработанный для предоставления сайтам стандартизированного способа публикации контактной информации безопасности. Когда исследователи безопасности (хакеры white hat) обнаруживают уязвимости безопасности на вашем сайте, им нужно знать, с кем связаться, как шифровать свои отчеты и какой политике раскрытия следовать. Без security.txt исследователи могут не найти нужного человека, и уязвимости могут быть публично раскрыты или даже злонамеренно эксплуатированы. Google, GitHub, Facebook/Meta, правительство Великобритании, CISA США и правительства Франции, Италии, Нидерландов и Австралии приняли этот стандарт.
Где следует размещать security.txt на сайте?
Согласно стандартам RFC 9116, security.txt должен быть размещен по пути /.well-known/security.txt (то есть в папке .well-known в корне вашего сайта). Вы также можете разместить копию в /security.txt в корневом каталоге в качестве запасного варианта. Он должен быть доступен по HTTPS, а Content-Type должен быть text/plain. Не размещайте его в других путях, так как автоматизированные инструменты сканирования безопасности его не распознают.
Какие форматы контактов поддерживает поле Contact? Могу ли я ввести несколько контактов?
Поддерживаются три формата: адреса электронной почты должны использовать префикс mailto: (например mailto:security@example.com), URL-адреса веб-сайтов должны использовать префикс https:// (например https://example.com/security-report), а номера телефонов должны использовать префикс tel: (например tel:+1-201-555-0123). Вы можете ввести несколько контактов, по одному на строку — исследователи безопасности могут выбрать наиболее удобный канал для связи с вами. Рекомендуется предоставить как минимум один адрес электронной почты и одну ссылку на веб-форму.
Является ли поле Expires обязательным? Каковы требования к формату?
Expires — обязательное поле (Contact также обязательное; все остальные — необязательные). Expires указывает время истечения контента security.txt и должно использовать время UTC в формате ISO 8601, например 2027-12-31T23:59:59Z (Z обозначает часовой пояс UTC). Рекомендуется устанавливать истечение через 6–12 месяцев после создания, чтобы напоминать себе регулярно обновлять контактную информацию безопасности. После истечения автоматизированные инструменты будут считать информацию файла потенциально недействительной.
Зачем нужно поле Encryption? Обязательно ли включать открытый ключ PGP?
Поле Encryption указывает на местоположение вашего открытого ключа PGP. Исследователи безопасности могут использовать этот открытый ключ для шифрования отчетов об уязвимостях перед их отправкой, предотвращая перехват сведений об уязвимостях во время передачи по электронной почте. Это не обязательное поле, но настоятельно рекомендуется — поскольку информация об уязвимостях очень чувствительна, электронные письма в открытом виде могут быть подслушаны интернет-провайдерами, администраторами почтовых серверов или злоумышленниками. Вы можете разместить свой открытый ключ PGP по адресу /.well-known/pgp-key.txt и ввести этот URL в поле Encryption.
Что делает поле Acknowledgments? Зачем настраивать страницу благодарностей?
Поле Acknowledgments указывает на общедоступную страницу благодарностей (также называемую Залом славы безопасности), где перечислены имена или идентификаторы исследователей, которые ранее сообщали вам об уязвимостях безопасности. Это публичное признание работы исследователей безопасности и эффективный способ привлечь больше исследователей white hat, чтобы помочь вам найти уязвимости. Многие исследователи безопасности отдают приоритет тестированию сайтов с общедоступными механизмами благодарности, поскольку это означает, что их вклад будет признан.
На какой контент должна ссылаться поле Policy?
Поле Policy должно ссылаться на вашу страницу Политики раскрытия уязвимостей (Vulnerability Disclosure Policy, VDP). На этой странице должно быть четко указано: какие действия по тестированию разрешены (а какие запрещены, например без DDoS, без доступа к данным пользователей), обязательства по времени реакции на отчеты об уязвимостях, предлагаете ли вы вознаграждения и ваши юридические обязательства в отношении законных исследований безопасности (например, не преследование исследователей, действующих добросовестно). Четкая Политика обеспечивает исследователям безопасности юридическое спокойствие, гарантируя, что они могут безопасно сообщать вам о проблемах.
Для чего нужно поле Canonical? Нужно ли его заполнять?
Поле Canonical объявляет канонический URL самого файла security.txt. Сайт может иметь security.txt, доступный в нескольких доменах или путях (например example.com и www.example.com); поле Canonical сообщает исследователям, какой URL является официальной, доверенной версией. Это предотвращает размещение злоумышленниками поддельного security.txt на каком-либо пути, чтобы обманом заставить исследователей отправлять отчеты об уязвимостях злоумышленнику. Рекомендуется заполнить официальный URL вашего домена, например https://example.com/.well-known/security.txt.
Что означает поле Preferred-Languages?
Preferred-Languages сообщает исследователям безопасности, на каких языках ваша команда безопасности может обрабатывать отчеты, выраженные в виде кодов языков, разделенных запятыми (например en, ru, de). Этот генератор автоматически устанавливает это поле на основе языка страницы, который вы сейчас используете. Это важно, потому что исследования безопасности носят глобальный характер — исследователи могут быть в любой стране, и предварительное указание поддерживаемых языков предотвращает сбои связи из-за языковых барьеров.
Должно ли поле Hiring также быть размещено в security.txt?
Да, Hiring — одно из необязательных полей, определенных в стандарте RFC 9116. Это поле указывает на страницу набора вашей команды безопасности. Сами исследователи безопасности являются отличными кандидатами на таланты в области безопасности — их способность находить уязвимости на вашем сайте демонстрирует сильные способности в области безопасности. Размещение ссылки на набор в security.txt — это высокоцелевой способ набора талантов в области безопасности. Многие известные компании (включая Google) включают ссылки на набор в свои файлы security.txt.
Приведет ли публикация контактного адреса электронной почты безопасности к получению большого количества спама?
Это наиболее распространенное беспокойство операторов сайтов. Существует несколько стратегий для снижения спама: во-первых, вместо прямой публикации адресов электронной почты опубликуйте URL-адрес веб-формы отчетности по безопасности (префикс https://), где вы можете добавить CAPTCHA для фильтрации ботов; во-вторых, используйте выделенный псевдоним электронной почты безопасности (например security@) и настройте строгую фильтрацию спама; в-третьих, обеспечьте шифрование открытым ключом PGP — автоматические отправители спама не используют шифрование PGP; в-четвертых, четко укажите в вашей Политике, что вы принимаете только отчеты, связанные с уязвимостями безопасности. На практике большинство сайтов, внедривших security.txt, сообщают о незначительном увеличении спама, но о значительном увеличении отчетов об уязвимостях.
Нуждается ли security.txt в цифровой подписи? Как это сделать?
RFC 9116 рекомендует (но не требует) использования подписей в открытом тексте OpenPGP для цифрового подписания security.txt, чтобы исследователи могли проверить, что файл действительно был официально опубликован сайтом и не был подделан злоумышленниками. Метод заключается в использовании GPG для подписания файла в режиме clearsign: gpg --clearsign -o security.txt.sig security.txt, затем используйте подписанный контент (начинающийся с -----BEGIN PGP SIGNED MESSAGE-----) в качестве окончательного контента security.txt. Однако это расширенная операция — большинство сайтов могут нормально функционировать без подписи.
Как я должен настроить Nginx/Apache/Caddy для security.txt?
Основные требования к конфигурации: убедитесь, что путь /.well-known/security.txt доступен, Content-Type возвращает text/plain, должен использоваться HTTPS и не перенаправляйте этот путь (особенно не перенаправляйте на другие домены). Nginx может использовать точное сопоставление местоположения: location = /.well-known/security.txt { default_type text/plain; alias /путь/к/security.txt; }; Apache должен убедиться, что .htaccess не блокирует доступ к каталогу .well-known; Caddy может использовать handle_path для прямого указания.
Мой сайт очень маленький (личный блог/проект с открытым исходным кодом) — мне все еще нужен security.txt?
Настоятельно рекомендуется. Независимо от размера сайта, если у вас есть пользовательские данные или вы предоставляете услуги в интернете, могут существовать уязвимости безопасности. Стоимость развертывания security.txt чрезвычайно низка — генерация с помощью этого инструмента занимает всего 2 минуты и требует размещения одного файла. Крупные компании, такие как Google и GitHub, используют его, и отдельные разработчики и проекты с открытым исходным кодом также могут его использовать. Это чрезвычайно экономически эффективная практика безопасности: почти нулевая стоимость, но она дает добросовестным исследователям, которые находят уязвимости, канал сообщить вам о проблемах вместо того, чтобы молча уйти или публично раскрыть.
В чем разница между security.txt и robots.txt?
Оба являются стандартными текстовыми файлами, размещаемыми в каталоге /.well-known/ (или корневом каталоге), но их назначение совершенно разное: robots.txt предназначен для поисковых роботов, сообщая им, какие пути не сканировать; security.txt предназначен для исследователей безопасности, сообщая им, как связаться с вами, если они обнаружат уязвимости. Один ориентирован на поисковые системы, другой — на исследователей безопасности — они дополняют друг друга без конфликтов и могут развертываться одновременно.
Устранение неполадок
Доступ к /.well-known/security.txt возвращает ошибку 404
Существует три распространенные причины: во-первых, файл не размещен в правильном местоположении — подтвердите, что путь — это файл security.txt внутри папки .well-known в корне сайта (обратите внимание, что .well-known — это скрытый каталог, начинающийся с точки); во-вторых, конфигурация веб-сервера блокирует доступ к каталогам, начинающимся с точки (правила .htaccess Apache или правила deny Nginx могут блокировать каталоги dotfile); в-третьих, правила перезаписи Nginx/Apache (например режим истории маршрутизации фронтенда) перенаправляют запросы на index.html. Решение: проверьте путь к файлу и явно добавьте правило местоположения для /.well-known/security.txt в конфигурации сервера.
Доступ к security.txt перенаправляет на страницу входа или главную страницу
Многие одностраничные приложения (SPA) или сайты с аутентификацией перенаправляют все несовпадающие пути на главную страницу или страницу входа. Это мешает автоматизированным инструментам найти security.txt. Решение: добавьте исключение для пути /.well-known/security.txt в конфигурации сервера, чтобы этот путь возвращал контент файла напрямую, минуя маршрутизацию SPA или обработку промежуточного программного обеспечения аутентификации. Это наиболее распространенная ловушка при развертывании security.txt.
Браузер загружает security.txt вместо отображения контента
Это происходит потому, что сервер возвращает неправильный Content-Type, возможно установленный как application/octet-stream или другой двоичный тип вместо text/plain. Решение: явно установите Content-Type как text/plain; charset=utf-8 для security.txt в конфигурации веб-сервера. Nginx требует default_type text/plain или add_header Content-Type text/plain; Apache обычно обрабатывает это автоматически, но при возникновении проблем вы можете использовать директиву AddType для принудительного указания.
Ввели электронную почту в поле Contact, но получаете ошибку формата
Значения поля Contact должны включать префиксы URI: адреса электронной почты должны начинаться с mailto: (например mailto:security@example.com, а не просто security@example.com), URL-адреса веб-сайтов должны начинаться с https:// (а не просто example.com/security), а номера телефонов должны начинаться с tel:. Это явно требуется стандартами RFC 9116 — поскольку поле Contact поддерживает несколько методов контакта, отсутствие префиксов делает невозможным для анализаторов определение типа.
Формат времени Expires отображается как неправильный
Expires должен использовать время UTC в формате ISO 8601 в формате ГГГГ-ММ-ДДTЧЧ:ММ:ССZ с буквой Z в конце, обозначающей часовой пояс UTC (не пишите смещения местного часового пояса, такие как +03:00). Правильный пример: 2027-12-31T23:59:59Z. Не используйте другие форматы, такие как 2027/12/31, 31 дек 2027 или 2027-12-31 23:59:59 — они не соответствуют стандарту.
Развернули security.txt, но инструменты онлайн-обнаружения все равно говорят, что не могут найти
Проверьте следующие моменты: во-первых, убедитесь, что доступ использует HTTPS (доступ по HTTP не считается — RFC требует HTTPS); во-вторых, убедитесь в правильном доступе как для домена с www, так и без www (если ваш сайт существует в обеих версиях домена, рекомендуется объявить основной домен в поле Canonical и разместить security.txt в обоих доменах или настроить правильные перенаправления 301); в-третьих, проверьте, очищен ли кэш CDN от старого контента; в-четвертых, подтвердите, что сервер не возвращает перенаправления (301/302) на другие URL на пути security.txt — RFC указывает, что перенаправления могут быть отклонены инструментами.
Глоссарий
- RFC 9116
- Официальный стандартный документ security.txt, опубликованный IETF под номером 9116, выпущенный в апреле 2022 года. Определяет все детали спецификации формата файла security.txt, полей, путей развертывания, типов MIME и т.д. и является авторитетной основой для реализации security.txt.
- Каталог .well-known
- Стандартный веб-каталог, определенный RFC 8615, используемый для хранения стандартизированных файлов метаданных для веб-сайтов (таких как security.txt, robots.txt, apple-app-site-association и т.д.), с фиксированным путем к папке .well-known в корневом каталоге сайта.
- VDP (Политика раскрытия уязвимостей)
- Политика раскрытия уязвимостей, которая описывает, какие тесты безопасности сайт разрешает, как сообщать об уязвимостях, обязательства по времени реакции, положения о правовой безопасной гавани и т.д. Поле Policy в security.txt должно ссылаться на страницу VDP.
- Шифрование PGP/GPG
- Pretty Good Privacy/GNU Privacy Guard, стандарт асимметричного шифрования. Исследователи безопасности используют открытый ключ сайта для шифрования отчетов об уязвимостях, и только сайт, владеющий закрытым ключом, может их расшифровать, предотвращая перехват сведений об уязвимостях во время передачи.
- ISO 8601
- Формат представления даты и времени, разработанный Международной организацией по стандартизации; RFC 9116 требует, чтобы поле Expires использовало этот формат во времени UTC (например 2027-12-31T23:59:59Z, где Z обозначает часовой пояс UTC).
- Зал славы (Благодарности по безопасности)
- Страница благодарностей, на которую указывает поле Acknowledgments, которая публично регистрирует имена/идентификаторы исследователей, сообщивших сайту об уязвимостях безопасности, служа публичным признанием вклада в исследования безопасности.
- Хакер White Hat
- Исследователи безопасности, которые обнаруживают и ответственно раскрывают уязвимости безопасности в добросовестных целях, в отличие от злонамеренных хакеров (black hats), которые эксплуатируют уязвимости для атак. security.txt предоставляет официальный канал коммуникации для исследователей white hat.
- Канонический URL
- Поле Canonical в security.txt объявляет официальный URL самого файла, предотвращая размещение злоумышленниками поддельных файлов security.txt в других путях или доменах для обмана исследователей.
Краткий справочник полей security.txt RFC 9116
Ниже приведены все поля, определенные стандартом security.txt, и их требования:
| Имя поля | Обязательное/Необязательное | Несколько разрешено? | Формат значения | Описание |
|---|---|---|---|---|
| Contact | ✅ Обязательное | ✅ Несколько строк разрешено | URI mailto:/https:/tel: | Контактная информация безопасности, поддерживает форматы электронной почты, URL веб-сайта и телефона |
| Expires | ✅ Обязательное | ❌ Ровно одно | Время UTC ISO 8601 | Время истечения контента файла; после истечения информация считается потенциально недействительной |
| Encryption | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | URL местоположения открытого ключа PGP для шифрования конфиденциальных отчетов об уязвимостях |
| Acknowledgments | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | URL страницы Зала славы безопасности/благодарностей, публично благодарит сообщающих об уязвимостях |
| Policy | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | URL страницы Политики раскрытия уязвимостей (VDP), описывает правила и область отчетности |
| Hiring | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | URL страницы набора команды безопасности, набирает таланты из исследователей безопасности |
| Canonical | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | Канонический URL самого файла security.txt, предотвращает подделку |
| Preferred-Languages | ⬜ Необязательное | ❌ Ровно одно | Коды языков (через запятую) | Языки, поддерживаемые командой безопасности, например en, ru, de |
| CSAF | ⬜ Необязательное | ✅ Несколько строк разрешено | URI https:// | URL метаданных поставщика Common Security Advisory Framework |
Примеры конфигурации security.txt для распространенных веб-серверов
После генерации контента security.txt настройте правильный путь доступа и Content-Type на вашем сервере:
| Веб-сервер | Ключевые моменты конфигурации | Примечания |
|---|---|---|
| Nginx | location = /.well-known/security.txt { default_type text/plain; alias /var/www/.well-known/security.txt; add_header Cache-Control "public, max-age=3600"; } | Используйте точное сопоставление (=), укажите default_type как text/plain, чтобы Nginx не обрабатывал txt-файлы как двоичные |
| Apache | Убедитесь, что каталог .well-known не заблокирован правилами Deny в .htaccess; просто разместите файл в папке .well-known в корневом каталоге сайта | Apache по умолчанию возвращает text/plain для .txt файлов, но убедитесь, что правила mod_rewrite не переписывают этот путь |
| Caddy | handle_path /.well-known/security.txt { file_server { root /var/www } } | Caddy по умолчанию использует HTTPS и правильно обрабатывает MIME-типы txt-файлов; простейшая конфигурация |
| Cloudflare Pages/Vercel/Netlify | Разместите security.txt в public/.well-known/security.txt; после развертывания статическая служба обеспечит правильный доступ | Платформы статического хостинга обычно автоматически обрабатывают правильный Content-Type; убедитесь, что платформы не игнорируют каталог .well-known, когда он начинается с точки |
| CDN/Reverse Proxy | Убедитесь, что CDN или WAF не блокируют и не кэшируют security.txt слишком долго; рекомендуемая настройка Cache-Control — max-age=3600 (1 час) | Не забудьте очистить кэш CDN после обновления security.txt, иначе исследователи могут видеть старые версии |
Privacy & Security
Все операции конфигурации в этом генераторе выполняются полностью локально в вашем браузере. Никакая из введенной вами информации — адреса электронной почты контактов безопасности, URL-адреса ключей PGP, ссылки на вакансии или любые другие данные — не отправляется ни на какой сервер, не собирается и не хранится. Весь введенный контент немедленно очищается при обновлении или закрытии страницы. Контент сгенерированного файла security.txt существует только в вашем буфере обмена и на серверах, на которых вы его развертываете; GeekFormat не сохраняет никаких копий.
- Генератор заголовков авторизации
- Парсер Cache-Control
- Парсер Content-Disposition
- Генератор CORS-заголовков
- CORS инспектор
- Генератор CSP
- Конвертер cURL в код
- Глобальная проверка распространения DNS
- DNS-запрос
- Парсер Forwarded-заголовков
- Генератор hreflang
- Анализатор HSTS
- Парсер HTTP-куки
- Проверка HTTP-заголовков
- Тестер HTTP-запросов
- Справочник кодов состояния HTTP
- Поиск IP
- Конвертер IPv4
- Развёртка IPv4-диапазонов
- IPv6 тулбокс
- Парсер Link-заголовков
- MX-записи
- Проверка портов
- Конструктор URL-параметров
- Парсер заголовков Rate Limit
- Инспектор редиректов
- Генератор Robots.txt
- Инспектор robots.txt
- Проверка заголовков безопасности
- Генератор security.txt
- Парсер Set-Cookie
- Аудит сети сайта
- Генератор Sitemap
- Инспектор sitemap
- Проверка SSL-сертификатов
- Калькулятор подсетей
- Парсер URL
- Парсер User-Agent
- Генератор UTM-ссылок
- Тест WebSocket
- Какой мой IP?
- Проверка WHOIS