security.txt podle RFC 9116: vytvoření, umístění a kontrola

Soubor security.txt zveřejňuje ověřitelný kontakt a pravidla pro odpovědné hlášení zranitelností. Nezabezpečuje web a nedává automatické svolení k testování — pomáhá pouze najít správný komunikační kanál.

Nejdůležitější pravidlo

Platný soubor zveřejněte přes HTTPS na /.well-known/security.txt. Musí obsahovat nejméně jedno pole Contact a právě jedno budoucí Expires. Kontakt průběžně ověřujte — nefunkční adresa je horší než žádný slib.

Co security.txt řeší — a co nikoliv

RFC 9116 definuje strojově čitelný textový soubor, ve kterém provozovatel zveřejní kontakt a informace k odpovědnému oznámení zranitelnosti. Výzkumník tak nemusí hledat obecný formulář nebo odhadovat, komu citlivý nález poslat.

Soubor není bezpečnostní ochrana, monitoring ani automatická vulnerability disclosure policy. Jeho existence také neznamená oprávnění testovat cizí systém. Rozsah povoleného jednání, zakázané techniky a případný safe harbor patří do samostatné stránky odkazované polem Policy.

security.txtKontakt a informace pro oznámení zranitelnosti.
Disclosure policyPodmínky, rozsah a očekávaný postup komunikace.
Incident responseInterní proces řešení potvrzeného bezpečnostního incidentu.

Správná cesta, HTTPS a Content-Type

Pro webové služby RFC vyžaduje cestu https://example.com/.well-known/security.txt. Kořenová varianta /security.txt slouží jen pro starší kompatibilitu nebo může přesměrovat na autoritativní umístění pod /.well-known/. Pokud existují obě, použije se well-known varianta.

  • Soubor je dostupný přes platné HTTPS.
  • Odpověď používá text/plain a UTF-8.
  • Každé pole je na samostatném řádku ve tvaru Název: hodnota.
  • Soubor platí pro host, ze kterého byl stažen. Automaticky nepokrývá subdomény.

Dvě povinná pole a užitečné volitelné údaje

Contact
Povinné a opakovatelné URI pro oznámení nálezu, například mailto: nebo zabezpečená kontaktní stránka. Pořadí vyjadřuje preferenci.
Expires
Povinné právě jednou. Datum a čas v RFC 3339 určují, dokdy mají být informace považované za aktuální. RFC doporučuje méně než rok dopředu.
Canonical
HTTPS adresa autoritativního security.txt. Je zvlášť vhodná u digitálně podepsaného souboru.
Preferred-Languages
Jazykové tagy, ve kterých dokážete oznámení zpracovat, například cs, en.
Policy
HTTPS odkaz na pravidla odpovědného oznamování a vymezení rozsahu.
Encryption
URI pro získání šifrovacího klíče. Samotný klíč se do hodnoty pole nevkládá.

Střídmý příklad pro menší web

Uveďte pouze kanály, které skutečně sledujete a umíte obsloužit. Datum v příkladu nahraďte vlastním termínem a obnovte jej ještě před vypršením.

Contact: mailto:security@example.com
Contact: https://example.com/hlaseni-zranitelnosti/
Expires: 2027-08-01T00:00:00Z
Preferred-Languages: cs, en
Canonical: https://example.com/.well-known/security.txt
Policy: https://example.com/hlaseni-zranitelnosti/
Nezveřejňujte kontakt bez procesu na druhé straně

Nastavte doručování, záložní odpovědnou osobu a způsob evidence hlášení. Automatická odpověď může potvrdit přijetí, ale nemá prozrazovat interní infrastrukturu ani slíbit nereálnou dobu opravy.

Nasazení na běžném i sdíleném hostingu

  1. 01

    Vytvořte veřejný adresář

    V document root vytvořte .well-known/ a do něj textový soubor security.txt. Ověřte, že hosting adresář nezačne blokovat jen kvůli úvodní tečce.

  2. 02

    Nastavte správný MIME typ

    Statický textový soubor obvykle dostane text/plain automaticky. Pokud ne, upravte konfiguraci hostingu nebo webserveru.

  3. 03

    Otestujte kontakt

    Pošlete z externí adresy zkušební zprávu a ověřte doručení, spam filtry i odpovědnost za reakci.

  4. 04

    Nastavte připomínku před Expires

    Bez pravidelné kontroly se i původně platný soubor stane zavádějícím.

Jak ověřit odpověď a obsah

curl -i https://example.com/.well-known/security.txt

HTTP/2 200
content-type: text/plain; charset=utf-8
  • Konečná URL zůstává na důvěryhodném HTTPS hostu.
  • Contact používá platné URI a vede ke sledovanému kanálu.
  • Expires je budoucí datum v RFC 3339 a odpovídá plánu údržby.
  • Odkazy Policy, Encryption a Canonical jsou dostupné a aktuální.

Audit CoderPro kontroluje HTTPS cestu /.well-known/security.txt, úspěšnou ne-HTML odpověď a přítomnost pole Contact. Nevaliduje celý formát, datum Expires, funkčnost kontaktu ani oprávnění k testování.

Ověřené zdroje

Stručné odpovědi bez zkratek

Je security.txt povinný?

Obecně ne. RFC 9116 popisuje dobrovolný standardizovaný formát, který usnadňuje bezpečnostním výzkumníkům najít kontakt a pravidla pro oznámení zranitelnosti.

Stačí uvést běžnou e-mailovou adresu bez mailto:?

Ne. Pole Contact obsahuje URI, takže e-mail se zapisuje například jako mailto:security@example.com. Soubor musí obsahovat alespoň jedno pole Contact a právě jedno pole Expires.

Dává security.txt svolení k bezpečnostnímu testování?

Ne. Samotné zveřejnění souboru neuděluje oprávnění k testování. Rozsah, pravidla a případný safe harbor musí provozovatel popsat ve vlastní disclosure policy.