Jak działa ta kontrola
Scanaris żąda /.well-known/security.txt, standardowej lokalizacji z RFC 9116, a jeśli go tam nie ma, próbuje /security.txt w roocie, starej lokalizacji. Uznaje plik za obecny tylko wtedy, gdy odpowiada 200 i zawiera wiersz zaczynający się od Contact:, jedynego pola obowiązkowego obok Expires. To wyklucza aplikacje jednostronicowe, które zwracają swój HTML dla dowolnej ścieżki. Jeśli go nie znajdzie, otwiera ustalenie informacyjne: nie odejmuje punktów od oceny, bo brak tego pliku nie jest luką bezpieczeństwa; to dobra praktyka, której Ci brakuje.
Do czego służy
Gdy ktoś znajdzie błąd na Twojej stronie (badacz, ciekawski użytkownik, inna firma), musi wiedzieć, komu to zgłosić. Bez jasnego kanału zwykle nie zgłasza, albo publikuje, albo pisze na ogólny formularz kontaktowy, którego nikt nie czyta. security.txt to plik tekstowy pod znaną ścieżką, w którym mówisz „pisz do mnie tutaj, w tym języku, a to moja polityka". Czytają go ludzie i narzędzia, a coraz więcej programów bug bounty i ubezpieczycieli uznaje go za oczywistość. Chroni też Ciebie: jasno pokazuje, że przyjmujesz odpowiedzialne zgłoszenia i na jakich warunkach.
Jak go utworzyć
Minimalny poprawny plik:
Contact: mailto:security@twojadomena.pl
Expires: 2027-10-01T00:00:00.000Z
Preferred-Languages: pl, en
Canonical: https://twojadomena.pl/.well-known/security.txt
- Contact (obowiązkowe):
mailto:, adres formularza lubtel:. Możesz podać kilka, w kolejności preferencji. Skrzynka musi istnieć i być czytana. - Expires (obowiązkowe): data w formacie ISO 8601, po której plik przestaje być ważny. RFC zaleca mniej niż rok: ustaw sobie przypomnienie o odnowieniu.
- Preferred-Languages, Policy (adres Twojej polityki ujawniania), Encryption (Twój klucz PGP) i Acknowledgments (strona z podziękowaniami) są opcjonalne.
- Canonical wskazuje oficjalny adres pliku; przydatne, jeśli podpisujesz plik PGP, żeby nikt nie mógł opublikować fałszywego.
Gdzie go umieścić
- Nuxt, Next.js, Vite, Astro: utwórz
public/.well-known/security.txt; jest serwowany tak, jak jest. Sprawdź, czy.gitignorenie ignoruje katalogów zaczynających się od kropki. - Vercel i Netlify: to samo, w publicznym katalogu projektu.
- nginx lub Apache: plik w
/.well-known/security.txtserwowanego katalogu; jeśli Twoja aplikacja przechwytuje wszystkie ścieżki, dodaj wyjątek dla/.well-known/. - WordPress: wgraj plik przez FTP do
.well-known/w roocie albo użyj wtyczki, która go generuje.
Serwuj go jako text/plain i przez HTTPS. Jeśli masz wiele domen, każda musi mieć własny albo przekierowywać na kanoniczny.
Sprawdź, czy naprawione
curl -si https://twojadomena.pl/.well-known/security.txt | grep -iE "^(HTTP|content-type|contact|expires)"
Oczekiwane: 200, typ text/plain, wiersz Contact: i wiersz Expires: z datą w przyszłości.
Często zadawane pytania
Czy dostanę więcej spamu albo maili od „łowców nagród"?
Trochę poczty niskiej jakości przyjdzie; to cena bycia osiągalnym. Prosty filtr i jasna polityka (co liczy się jako ważne zgłoszenie, czy płacisz czy nie) ograniczają szum. To, co Ci oszczędza, to alternatywa: dowiedzieć się z Twittera.
Czy mogę wskazać tylko ogólny formularz kontaktowy?
Możesz, ale lepsza jest dedykowana skrzynka, którą ktoś sprawdza. Jeśli ogólny formularz czyta marketing, zgłoszenie podatności może tygodniami iść do właściwej osoby.
Dlaczego nie wpływa na ocenę?
Bo mierzy przygotowanie, a nie ekspozycję. Pozostałe kontrole bezpieczeństwa, te, które się liczą, są w checkliście bezpieczeństwa przed startem.