Dodaj security.txt w 5 minut — ujawnianie podatności po ludzku | Scanthra
Maj 2026https://twojadomena.pl/.well-known/security.txt, który mówi:
„tutaj możesz napisać do nas o problemie z bezpieczeństwem i jak długo ta
informacja jest aktualna". Jest zdefiniowany przez IETF RFC 9116, zajmuje pięć
minut, nic nie kosztuje i dyskretnie sygnalizuje badaczom, klientom i działom
zakupów, że traktujesz bezpieczeństwo poważnie.
Czym właściwie jest security.txt
security.txt to mały, czytelny maszynowo plik tekstowy, który publikujesz
na swojej stronie. To odpowiednik robots.txt w świecie bezpieczeństwa:
znana lokalizacja, prosta składnia i jasny cel. Jego zadanie to odpowiedzieć
na jedno pytanie kogoś, kto właśnie sądzi, że znalazł podatność na twojej stronie —
„komu to zgłosić i jak?"
Format jest zestandaryzowany w IETF RFC 9116 („A File Format to Aid in Security Vulnerability Disclosure"). Stał się Proponowanym Standardem w 2022 roku, więc nie jest już projektem ani ciekawostką — to ustalony sposób robienia tej rzeczy.
Dlaczego warto, nawet jeśli nie jesteś bankiem
Trzy powody, dla których warto poświęcić te pięć minut:
- Badacze mogą do ciebie dotrzeć. Bez wyraźnego kanału życzliwi odkrywcy albo się poddają, albo publikują problem publicznie, albo zalewają twój ogólny formularz kontaktowy. Udokumentowany adres łapie problem wcześnie i w trybie prywatnym.
- Przetargi i kwestionariusze tego oczekują. Kwestionariusze bezpieczeństwa dostawców (SIG, CAIQ, własne firmowe) i checklisty zgodne z NIS2 (dyrektywa UE o cyberbezpieczeństwie) coraz częściej pytają: „czy publikujesz politykę ujawniania podatności?". Działający security.txt to najtańsze możliwe „tak".
-
Sygnalizuje dojrzałość. Strona z aktualnym plikiem
security.txtwygląda jak taka, której właściciel zastanowił się, co się stanie, gdy coś pójdzie nie tak. To samo przenosi cię z dolnego kwartyla.
Pola zdefiniowane przez RFC 9116
Wymagane są tylko Contact i Expires. Reszta jest
opcjonalna, ale przydatna.
-
Contact:— wymagane. Jeden lub więcej sposobów kontaktu: e-mail (z prefiksemmailto:), numer telefonu (tel:) lub adres URL formularza (https://). Dozwolone jest wiele liniiContact; wymień je w kolejności preferencji. -
Expires:— wymagane. Znacznik czasu ISO 8601, po którym ten plik nie powinien być już traktowany jako wiarygodny. Większość zespołów ustawia go 6–12 miesięcy w przyszłości i odświeża na przypomnienie w kalendarzu. -
Encryption:— adres URL do twojego publicznego klucza PGP, jeśli chcesz przyjmować zaszyfrowane zgłoszenia. Opcjonalne, ale doceniane. -
Acknowledgments:— adres URL strony dziękującej badaczom, którzy zgłosili problemy odpowiedzialnie. Tania dobra karma. -
Preferred-Languages:— oddzielone przecinkiem tagi językowe BCP 47 (np.pl, en). Możesz to pominąć — większość zespołów i tak rozumie angielski plus swój własny język. -
Canonical:— kanoniczna URL tego pliku. Przydatne, jeśli twoja strona jest dostępna pod wieloma nazwami hostów; informuje parsery, która kopia jest miarodajna. -
Policy:— URL do pełnej polityki ujawniania podatności: zakres, klauzula bezpiecznego portu, oczekiwany czas reakcji. -
Hiring:— URL do strony z ofertami pracy dla zespołu bezpieczeństwa. Tak, to jest w specyfikacji. -
CSAF:— URL do pliku metadanych dostawcy CSAF 2.0. Istotne tylko jeśli publikujesz porady w formacie maszynowym; małe firmy mogą to zignorować.
Gotowy do skopiowania przykład
Zastąp e-mail, daty i adresy URL swoimi danymi. Zachowaj plik jako czysty
ASCII (bez BOM) z końcami linii UNIX. Linie zaczynające się od
# to komentarze.
# security.txt for example.com
# Please report security issues using the contacts below.
Contact: mailto:security@example.com
Contact: https://example.com/security/report
Expires: 2027-05-01T00:00:00.000Z
Encryption: https://example.com/.well-known/pgp-key.txt
Acknowledgments: https://example.com/security/hall-of-fame
Preferred-Languages: en
Canonical: https://example.com/.well-known/security.txt
Policy: https://example.com/security/policy
Gdzie to umieścić
Kanoniczna lokalizacja to:
https://twojadomena.pl/.well-known/security.txt
Stara lokalizacja /security.txt w katalogu głównym jest
też tolerowana przez większość narzędzi, ale ścieżka /.well-known/
jest tą przepisaną przez RFC 9116 — używaj jej.
nginx
location = /.well-known/security.txt {
alias /var/www/example.com/.well-known/security.txt;
default_type text/plain;
add_header Cache-Control "public, max-age=3600";
}
Apache
<Files "security.txt">
ForceType text/plain
Header set Cache-Control "public, max-age=3600"
</Files>
Po prostu umieść plik pod
/var/www/example.com/.well-known/security.txt i upewnij się,
że Apache może serwować ukryte katalogi (niektóre domyślne konfiguracje
blokują ścieżki z prefiksem .).
Hostingi statyczne, WordPress, Cloudflare Pages, Vercel, Netlify
Wrzuć plik o nazwie security.txt do folderu .well-known
w katalogu publicznych zasobów i przebuduj. Większość hostingów statycznych
bez problemu serwuje katalogi z kropką; sprawdź odwiedzając URL zaraz po
wdrożeniu.
Podpisz go (opcjonalnie, ale schludnie)
RFC 9116 pozwala na to, żeby plik był wiadomością PGP podpisaną jawnie. Większość małych firm tego nie robi — i to jest w porządku. Jeśli już publikujesz klucz PGP, podpisanie utrudnia komuś sfałszowanie pliku przez skompromitowany host. Jeśli nie, pomiń to; niepodpisany plik jest w pełni prawidłowy.
Typowe błędy, których warto unikać
-
Brak
Expires. Wygasłe lub nieobecne poleExpiressprawia, że plik jest nieprawidłowy według specyfikacji. Parsery będą ostrzegać lub go odrzucać. -
Zły typ MIME. Plik musi być serwowany jako
text/plain; czasem serwer zwracaapplication/octet-streami psuje parsowanie. - Tylko HTTPS. security.txt musi być serwowany przez HTTPS na kanonicznym URL. Wersja przez HTTP jest ignorowana.
-
Prywatna skrzynka w
Contact. Używaj adresu roli, np.security@, który przeżywa zmiany personalne, a niejan@. -
Zapomniane odnawianie. Wpisz datę z pola
Expiresdo tego samego kalendarza, w którym odnowienia TLS. Wygasły security.txt jest gorszy niż żaden — mówi badaczom, że zespół śpi.
Jak Scanthra to wykrywa
Nasz moduł M10 robots i well-known sprawdza, czy
/.well-known/security.txt istnieje i jest dostępny pod kanonicznym
HTTPS URL. Jeśli go brakuje, sygnalizujemy niskopriorytetową
obserwację zamiast wykrycia — to „miło mieć, nie rana" — i dołączamy
ten przewodnik jako sugerowaną naprawę. Strony, które już publikują prawidłowy
plik, dostają cichą pochwałę w mapie zgodności.
Chcesz wiedzieć, czy twoja strona ma ten problem?
Scanthra przeprowadza przyjazną, pasywną kontrolę i wysyła ci zrozumiały raport PDF na e-mail.
Sprawdź swoją stronę za darmo