Generator security.txt

Generator security.txt

Wyjście zgodne z RFC 9116, gotowe do wdrożenia pod adresem /.well-known/security.txt.

Informacje o ujawnianiu luk

Zadeklaruj Canonical URL swojego security.txt, aby zapobiec fałszowaniu na innych ścieżkach

Wygenerowane wyjście

Generuj online pliki security.txt zgodne ze standardem RFC 9116, zapewniając badaczom bezpieczeństwa formalny kanał zgłaszania luk. Podgląd w czasie rzeczywistym, kopiowanie jednym kliknięciem, wdróż bezpośrednio do /.well-known/security.txt, aby zadziałało.

Powiązane Rekomendacje

O security.txt: Kompletny przewodnik po standardach ujawniania luk w zabezpieczeniach witryn

security.txt to najlepsza praktyka bezpieczeństwa sieci Web formalnie ustandaryzowana przez IETF (Internet Engineering Task Force) w RFC 9116, zaprojektowana w celu zapewnienia witrynom ujednoliconego, standardowego sposobu publikowania informacji kontaktowych bezpieczeństwa. Mówiąc prościej, jest to plik tekstowy umieszczony w stałej ścieżce w witrynie, mówiący badaczom bezpieczeństwa (hakerom white hat): „Jeśli znajdziesz luki w zabezpieczeniach mojej witryny, oto jak się z nami skontaktować, oto nasz klucz publiczny szyfrowania, oto nasza polityka ujawniania i czekamy na Twoje raporty”.

Przed powstaniem standardu security.txt informacje kontaktowe bezpieczeństwa witryn były przypadkowe. Niektóre witryny w ogóle nie miały informacji kontaktowych bezpieczeństwa, niektóre ukrywały je na jakiejś niejasnej stronie, niektóre podawały tylko nieobsługiwany adres e-mail info@, a niektóre wymagały żmudnego wyszukiwania na LinkedIn, aby znaleźć zespół bezpieczeństwa. Spowodowało to poważny problem: gdy badacze bezpieczeństwa działający w dobrej wierze odkrywali luki, często nie mogli znaleźć właściwego kanału do ich zgłoszenia. Rezultatem było — wiele luk zostało cicho odłożonych na półkę, pozostawionych niezałatanych, dopóki nie zostały odkryte i wykorzystane przez złośliwych hakerów. security.txt powstał, aby rozwiązać ten problem „ostatniej mili”.

Koncepcja security.txt została po raz pierwszy zaproponowana przez badaczy bezpieczeństwa EdOverflowa i Yakova Shafranovicha w 2017 roku i szybko zyskała szerokie wsparcie branży. W kwietniu 2022 r. security.txt zostało formalnie zatwierdzone przez IETF jako RFC 9116, stając się międzynarodowo uznanym standardem bezpieczeństwa sieci Web. Obecnie duże firmy technologiczne, takie jak Google, GitHub, Meta (Facebook), LinkedIn i Cloudflare, a także agencje rządowe, w tym rząd Wielkiej Brytanii, amerykańska CISA (Agencja Bezpieczeństwa Cybernetycznego i Infrastruktury), rząd Francji, rząd Włoch, rząd Holandii i Australijskie Centrum Cyberbezpieczeństwa, wdrożyły security.txt na swoich oficjalnych witrynach i publicznie zalecają innym organizacjom jego przyjęcie.

Podstawowa konstrukcja pliku security.txt jest bardzo prosta — jest to plik zwykłego tekstu składający się z wierszy w formacie „nazwa-pola: wartość”, podobny do formatu nagłówka HTTP. Standard definiuje dwa obowiązkowe pola: Contact (informacje kontaktowe bezpieczeństwa, które mogą być wielokrotne) i Expires (czas wygaśnięcia pliku); a także kilka opcjonalnych pól: Encryption (adres URL klucza publicznego szyfrowania PGP), Acknowledgments (adres URL strony podziękowań), Policy (adres URL polityki ujawniania luk), Hiring (adres URL ofert pracy bezpieczeństwa), Canonical (kanoniczny adres URL pliku), Preferred-Languages (obsługiwane języki raportów) i CSAF (adres URL metadanych dostawcy Common Security Advisory Framework). Ten prosty format ułatwia analizowanie zarówno ludziom, jak i maszynom.

Dlaczego wdrożenie security.txt jest tak ważne? Po pierwsze, obniża barierę zgłaszania luk. Badacze bezpieczeństwa nie muszą poświęcać dużo czasu na znajdowanie informacji kontaktowych — mogą znaleźć właściwy kanał zgłaszania jednym kliknięciem. Po drugie, demonstruje proaktywne podejście organizacji do bezpieczeństwa — witryna z security.txt zasadniczo mówi: „Traktujemy bezpieczeństwo poważnie i czekamy na odpowiedzialne raporty”. Po trzecie, zmniejsza ryzyko publicznego ujawnienia lub wykorzystania luk: mając formalny kanał, badacze nie będą wybierać publicznego ujawniania luk bezpośrednio na Twitterze lub GitHubie, ponieważ nie mogą się z nikim skontaktować. Po czwarte, w wielu wymaganiach regulacyjnych branży (np. finanse, opieka zdrowotna, rząd) ustanowienie kanału ujawniania luk stało się wymogiem zgodności.

Podczas wdrażania security.txt należy zwrócić uwagę na kilka kluczowych szczegółów. Po pierwsze, ścieżka musi być poprawna: standardowa ścieżka to /.well-known/security.txt, a kopię można również umieścić w /security.txt w katalogu głównym jako rezerwę. Katalog .well-known w tym miejscu jest standardowym katalogiem „dobrze znanych zasobów” zdefiniowanym w RFC 8615, w którym inne standardowe pliki, takie jak robots.txt, są również umieszczane w powiązanych lokalizacjach. Po drugie, musi być obsługiwany przez HTTPS — niezaszyfrowany HTTP jest uważany za niebezpieczny. Po trzecie, Content-Type musi być text/plain, a nie text/html lub inny typ. Po czwarte, nie wykonuj przekierowań międzydomenowych dla security.txt — jeśli https://example.com/.well-known/security.txt przekierowuje do https://inna-domena.com/security.txt, badacze i zautomatyzowane narzędzia uznają to za podejrzane. Po piąte, pamiętaj o ustawieniu pola Expires i regularnym go aktualizowaniu; wygasłe security.txt zostanie uznane za posiadające niewiarygodne informacje.

Pole Contact jest najważniejszym polem w security.txt i jedynym naprawdę niezbędnym polem (Expires również jest obowiązkowe, ale jest tylko znacznikiem czasu). Contact obsługuje trzy formaty URI: mailto: dla adresów e-mail, https:// dla linków sieci Web (np. stron formularzy zgłaszania bezpieczeństwa) i tel: dla numerów telefonów. Zdecydowanie zaleca się podanie co najmniej jednego adresu e-mail mailto i jednego linku do formularza https — formularze zapobiegają spamowi botów, podczas gdy poczta e-mail jest wygodniejsza dla badaczy do bezpośredniego wysyłania zaszyfrowanych raportów. Wiele kontaktów może być wymienionych w wielu wierszach, na przykład jednocześnie podając adres e-mail zespołu bezpieczeństwa, adres e-mail kierownika bezpieczeństwa i linki do platform luk w zabezpieczeniach stron trzecich.

Chociaż pole Encryption jest opcjonalne, w praktyce jest bardzo ważne. Gdy badacze bezpieczeństwa odkryją krytyczną lukę (taką jak wyciek danych użytkownika lub zdalne wykonanie kodu), absolutnie nie chcą wysyłać szczegółów luki w wiadomości e-mail w postaci jawnej — ponieważ poczta e-mail przechodzi przez wiele serwerów podczas transmisji, każdy węzeł może zostać podsłuchany. Szyfrowanie kluczem publicznym PGP (Pretty Good Privacy) jest branżowym standardem bezpiecznej komunikacji. Wystarczy wygenerować parę kluczy PGP, umieścić klucz publiczny w witrynie (np. pod adresem /.well-known/pgp-key.txt) i wprowadzić ten adres URL w polu Encryption. Badacze szyfrują zawartość raportu Twoim kluczem publicznym, a tylko osoby posiadające odpowiedni klucz prywatny mogą go odszyfrować i odczytać.

Pole Policy łączy się z Twoją stroną Polityki Ujawniania Luk (Vulnerability Disclosure Policy, VDP), która jest kluczem do budowania zaufania badaczy. Dobra VDP powinna jasno określać: zakres testowania (które systemy są w zakresie testowania, a które poza zakresem), dozwolone metody testowania (np. testowanie SQL injection/XSS dozwolone, ale DDoS/inżynieria społeczna/dostęp do rzeczywistych danych użytkownika zabronione), zobowiązane czasy reakcji (np. „Potwierdzamy otrzymanie raportu w ciągu 3 dni roboczych”), czy oferowane są nagrody za luki oraz zobowiązania dotyczące bezpiecznej przystani prawnej (jasno określające nieściganie badaczy działających w dobrej wierze, którzy przestrzegają zasad). Istnieje wiele szablonów VDP dostępnych międzynarodowo do wglądu, a amerykańska CISA również udostępnia szablon VDP o otwartym kodzie źródłowym.

Oprócz samego kontaktu bezpieczeństwa, security.txt ma kilka „zaskakujących” pól. Pole Acknowledgments tworzy Galerię Sław Bezpieczeństwa — publicznie dziękując badaczom, którzy pomagają znaleźć luki, co uznaje ich pracę, a także służy budowaniu społeczności. Pole Hiring to bardzo sprytny projekt: ludzie, którzy potrafią znaleźć luki w Twojej witrynie, są z natury doskonałymi talentami bezpieczeństwa, a umieszczenie linku rekrutacyjnego w security.txt to najprecyzyjniejszy kanał rekrutacji talentów bezpieczeństwa. Wiele firm zatrudniło doskonałych inżynierów bezpieczeństwa za pośrednictwem security.txt. Pole Canonical to kwestia bezpieczeństwa — zapobieganie fałszowaniu przez atakujących Twojego security.txt w innych domenach.

Jeśli chodzi o powszechne obawy dotyczące spamu, w praktyce większość organizacji, które wdrożyły security.txt, zgłasza znikomy wzrost spamu. Dzieje się tak dlatego, że po pierwsze, spamujący zazwyczaj nie uzyskują adresów e-mail przez indeksowanie security.txt; po drugie, zamiast bezpośredniego umieszczania wiadomości e-mail mailto można używać linków do formularzy https://, a dodanie CAPTCHA do formularzy może całkowicie zablokować boty; po trzecie, dedykowane wiadomości e-mail bezpieczeństwa (np. security@) zwykle mają skonfigurowane surowe filtrowanie spamu. W przeciwieństwie do tego, koszt pominięcia krytycznych raportów o lukach z powodu braku kanału kontaktu bezpieczeństwa znacznie przewyższa potencjalny wzrost niewielkich ilości spamu.

Ten generator jest zbudowany w ścisłej zgodności ze standardem RFC 9116, a wszystkie formaty wyjściowe są znormalizowane: pole Contact automatycznie rozpoznaje prefiksy, pole Expires używa standardowego formatu czasu UTC ISO 8601, a Preferred-Languages jest automatycznie ustawiane na podstawie języka, z którego korzystasz. Wygenerowaną zawartość można bezpośrednio skopiować i wdrożyć do ścieżki /.well-known/security.txt bez żadnych modyfikacji. Ponadto cała konfiguracja jest wykonywana lokalnie w przeglądarce i nigdy nie jest wysyłana na żaden serwer — Twoje informacje kontaktowe bezpieczeństwa zawsze pozostają na Twoim urządzeniu. Wdrożenie security.txt zajmuje tylko 5 minut, ale kanał komunikacji bezpieczeństwa, który tworzy, może pomóc Ci uniknąć poważnego incydentu bezpieczeństwa w przyszłości.

Przypadki użycia

  • Tworzenie formalnych kanałów zgłaszania luk dla witryn korporacyjnych, platform SaaS i witryn e-commerce poprzez konfigurację adresów e-mail Contact i stron polityki bezpieczeństwa Policy
  • Publikowanie adresów URL publicznych kluczy szyfrowania PGP, aby badacze bezpieczeństwa mogli szyfrować zgłoszenia wrażliwych szczegółów luk, zapobiegając przechwyceniu informacji o lukach w transmisji jawnej
  • Ustawianie adresów URL strony Galerii Sław Bezpieczeństwa Acknowledgments, aby publicznie podziękować badaczom zgłaszającym luki, budując zaufanie w społeczności bezpieczeństwa
  • Konfigurowanie linków do ofert pracy bezpieczeństwa Hiring, aby proaktywnie prezentować informacje o rekrutacji zespołu badaczom bezpieczeństwa i hakerom white hat, przyciągając talenty bezpieczeństwa
  • Ustawianie znaczników czasu wygaśnięcia Expires, aby przypominać zespołom o regularnym przeglądzie i aktualizacji informacji kontaktowych bezpieczeństwa, zapobiegając nieosiągalnym kontaktom z powodu nieaktualnych informacji, które pozostawiają luki niezgłoszone
  • Konfigurowanie pól Canonical w celu deklaracji kanonicznego adresu URL pliku security.txt, zapobiegając fałszowaniu przez atakujących złośliwej zawartości security.txt wprowadzającej badaczy w błąd
  • Spełnianie wymagań Polityki Ujawniania Luk (VDP) dla witryn o wysokich wymaganiach zgodności w sektorze rządowym, finansowym i opieki zdrowotnej, zgodnie z najlepszymi praktykami regulacyjnymi branży
  • Szybkie konfigurowanie punktów wejścia kontaktu bezpieczeństwa dla projektów open source, blogów osobistych i usług API, demonstrując poważne podejście do kwestii bezpieczeństwa

Jak Używać

  1. Wypełnij adresy e-mail lub adresy URL kontaktu bezpieczeństwa w sekcji Contact (jeden na wiersz, obsługiwane wiele wierszy; wiadomości e-mail wymagają prefiksu mailto:, adresy URL sieci Web wymagają prefiksu https://)
  2. Skonfiguruj opcjonalne pola w razie potrzeby: Encryption (adres URL klucza publicznego PGP), Acknowledgments (strona Galerii Sław), Policy (strona polityki ujawniania luk), Hiring (strona ofert pracy bezpieczeństwa), Canonical (kanoniczny adres URL pliku) itp.
  3. Ustaw czas wygaśnięcia Expires (czas UTC w formacie ISO 8601, np. 2027-12-31T23:59:59Z; zalecane ustawienie to 6–12 miesięcy w przyszłości)
  4. Podglądaj wygenerowaną zawartość w czasie rzeczywistym po prawej stronie; po potwierdzeniu poprawności formatu kliknij przycisk kopiowania
  5. Utwórz folder .well-known w katalogu głównym witryny i zapisz zawartość jako security.txt w nim
  6. Skonfiguruj serwer WWW (Nginx/Apache/Caddy itp.), aby zapewnić dostęp przez https://twoja-domena/.well-known/security.txt z ustawionym Content-Type na text/plain

Funkcje

  • Ściśle zgodne z najnowszym standardem RFC 9116: format wyjścia w pełni zgodny z specyfikacją, gotowy do wdrożenia w środowisku produkcyjnym
  • Obsługa wielu kontaktów Contact: jeden wpis na wiersz, e-mail (mailto:), adres URL (https://), telefon (tel:) mogą być deklarowane niezależnie
  • Pełne pokrycie pól: obowiązkowe pola Contact i Expires oraz wszystkie pola opcjonalne: Encryption, Acknowledgments, Policy, Hiring, Canonical, Preferred-Languages
  • Generowanie podglądu w czasie rzeczywistym: zawartość security.txt aktualizuje się natychmiast po modyfikacji dowolnej konfiguracji — WYSIWYG, bez potrzeby klikania przycisku generowania
  • Automatyczna deklaracja języka: automatycznie dodaje pole Preferred-Languages na podstawie bieżącego języka strony, ułatwiając zgłaszanie przez międzynarodowych badaczy bezpieczeństwa
  • Format czasu ISO 8601: pole Expires używa standardowego formatu czasu UTC zgodnego z najnowszymi specyfikacjami RFC
  • Walidacja formatu pól: automatycznie sprawdza prefiksy Contact (mailto:/https:/tel:) i format czasu Expires, aby zapobiec nieprawidłowemu wyjściu
  • Kopiowanie jednym kliknięciem: kliknij, aby skopiować pełną zawartość do schowka — wklej i wdróż natychmiast
  • Wbudowane szablony przykładowe: wstępnie wypełnione przykładowym formatem, dzięki czemu możesz szybko zastąpić własnymi informacjami zamiast zaczynać od zera
  • Czysto frontendowe działanie lokalne: konfiguracja jest przetwarzana lokalnie w przeglądarce i nigdy nie jest wysyłana na żaden serwer
  • Wskazówki dotyczące ścieżki wdrożenia: po wygenerowaniu pokazuje standardową ścieżkę wdrożenia /.well-known/security.txt i kluczowe punkty konfiguracji serwera WWW
  • Bez znaku wodnego: wygenerowane pliki nie zawierają znaków wodnych ani ograniczeń, odpowiednie do bezpośredniego użycia na witrynach komercyjnych

Często Zadawane Pytania

Co to jest plik security.txt? Dlaczego moja witryna go potrzebuje?

security.txt to standard bezpieczeństwa sieci Web zdefiniowany przez IETF w RFC 9116, zaprojektowany w celu zapewnienia witrynom ustandaryzowanego sposobu publikowania informacji kontaktowych bezpieczeństwa. Gdy badacze bezpieczeństwa (hakerzy white hat) odkryją luki w zabezpieczeniach Twojej witryny, muszą wiedzieć, z kim się skontaktować, jak szyfrować swoje raporty i jaką politykę ujawniania przestrzegać. Bez security.txt badacze mogą nie znaleźć właściwej osoby, a luki mogą zostać publicznie ujawnione, a nawet złośliwie wykorzystane. Google, GitHub, Facebook/Meta, rząd Wielkiej Brytanii, amerykańska CISA oraz rządy Francji, Włoch, Holandii i Australii przyjęły ten standard.

Gdzie należy umieścić security.txt w witrynie?

Zgodnie ze standardami RFC 9116, security.txt musi być umieszczony w ścieżce /.well-known/security.txt (tj. w folderze .well-known w katalogu głównym witryny). Możesz również umieścić kopię w /security.txt w katalogu głównym jako rezerwę. Musi być dostępny przez HTTPS, a Content-Type musi być text/plain. Nie umieszczaj go w innych ścieżkach, ponieważ zautomatyzowane narzędzia skanowania bezpieczeństwa go nie rozpoznają.

Jakie formaty kontaktów obsługuje pole Contact? Czy mogę wprowadzić wiele kontaktów?

Obsługiwane są trzy formaty: adresy e-mail muszą używać prefiksu mailto: (np. mailto:security@example.com), adresy URL sieci Web muszą używać prefiksu https:// (np. https://example.com/security-report), a numery telefonów muszą używać prefiksu tel: (np. tel:+1-201-555-0123). Możesz wprowadzić wiele kontaktów, jeden na wiersz — badacze bezpieczeństwa mogą wybrać najwygodniejszy kanał, aby się z Tobą skontaktować. Zaleca się podanie co najmniej jednego adresu e-mail i jednego linku do formularza sieci Web.

Czy pole Expires jest obowiązkowe? Jakie są wymagania dotyczące formatu?

Expires jest polem obowiązkowym (Contact również jest obowiązkowe; wszystkie pozostałe są opcjonalne). Expires wskazuje czas wygaśnięcia zawartości security.txt i musi używać czasu UTC w formacie ISO 8601, np. 2027-12-31T23:59:59Z (Z wskazuje strefę czasową UTC). Zaleca się ustawienie wygaśnięcia na 6–12 miesięcy po utworzeniu, aby przypomnieć sobie o regularnej aktualizacji informacji kontaktowych bezpieczeństwa. Po wygaśnięciu zautomatyzowane narzędzia uznają informacje w pliku za potencjalnie nieprawidłowe.

Dlaczego potrzebne jest pole Encryption? Czy muszę dołączyć klucz publiczny PGP?

Pole Encryption wskazuje lokalizację Twojego klucza publicznego PGP. Badacze bezpieczeństwa mogą użyć tego klucza publicznego do szyfrowania raportów o lukach przed ich wysłaniem, zapobiegając przechwyceniu szczegółów luki podczas transmisji e-mail. To nie jest pole obowiązkowe, ale jest zdecydowanie zalecane — ponieważ informacje o lukach są wysoce wrażliwe, wiadomości e-mail w postaci jawnej mogą być podsłuchiwane przez dostawców usług internetowych, administratorów serwerów pocztowych lub atakujących. Możesz umieścić swój klucz publiczny PGP pod adresem /.well-known/pgp-key.txt i wprowadzić ten adres URL w polu Encryption.

Co robi pole Acknowledgments? Po co konfigurować stronę podziękowań?

Pole Acknowledgments wskazuje publiczną stronę podziękowań (nazywaną również Galerią Sław Bezpieczeństwa), zawierającą nazwiska lub identyfikatory badaczy, którzy wcześniej zgłaszali Ci luki w zabezpieczeniach. Jest to publiczne uznanie pracy badaczy bezpieczeństwa i skuteczny sposób na przyciągnięcie większej liczby badaczy white hat, którzy pomogą Ci znaleźć luki. Wielu badaczy bezpieczeństwa priorytetowo traktuje testowanie witryn z publicznymi mechanizmami podziękowań, ponieważ oznacza to, że ich wkład zostanie uznany.

Do jakiej zawartości powinno prowadzić łącze w polu Policy?

Pole Policy powinno prowadzić do Twojej strony Polityki Ujawniania Luk (Vulnerability Disclosure Policy, VDP). Ta strona powinna jasno określać: jakie działania testowe są dozwolone (a jakie zabronione, np. brak DDoS, brak dostępu do danych użytkownika), zobowiązania dotyczące czasu reakcji na raporty o lukach, czy oferujesz nagrody oraz Twoje zobowiązania prawne w zakresie legalnych badań bezpieczeństwa (np. nieściganie badaczy działających w dobrej wierze). Przejrzysta Polityka zapewnia badaczom bezpieczeństwa prawny spokój ducha, zapewniając ich, że mogą bezpiecznie zgłaszać Ci problemy.

Do czego służy pole Canonical? Czy muszę je wypełniać?

Pole Canonical deklaruje kanoniczny adres URL samego pliku security.txt. Witryna może mieć dostęp do security.txt w wielu domenach lub ścieżkach (np. example.com i www.example.com); pole Canonical informuje badaczy, który adres URL jest oficjalną, zaufaną wersją. Zapobiega to umieszczaniu przez atakujących sfałszowanego pliku security.txt w jakiejś ścieżce, aby nakłonić badaczy do wysyłania raportów o lukach do atakującego. Zaleca się wypełnienie oficjalnego adresu URL domeny, np. https://example.com/.well-known/security.txt.

Co oznacza pole Preferred-Languages?

Preferred-Languages informuje badaczy bezpieczeństwa, jakimi językami posługuje się Twój zespół bezpieczeństwa w przypadku raportów, wyrażonych jako kody języków oddzielone przecinkami (np. en, pl, de). Ten generator automatycznie ustawia to pole na podstawie języka strony, z którego aktualnie korzystasz. Jest to ważne, ponieważ badania bezpieczeństwa mają charakter globalny — badacze mogą przebywać w dowolnym kraju, a wcześniejsze określenie obsługiwanych języków zapobiega niepowodzeniom komunikacji spowodowanym barierami językowymi.

Czy pole Hiring również powinno być umieszczone w security.txt?

Tak, Hiring jest jednym z opcjonalnych pól zdefiniowanych w standardzie RFC 9116. To pole wskazuje stronę rekrutacyjną Twojego zespołu bezpieczeństwa. Sami badacze bezpieczeństwa są doskonałymi kandydatami na talenty bezpieczeństwa — ich zdolność do znajdowania luk w Twojej witrynie świadczy o silnych umiejętnościach w zakresie bezpieczeństwa. Umieszczenie linku rekrutacyjnego w security.txt to wysoce ukierunkowany sposób rekrutacji talentów bezpieczeństwa. Wiele znanych firm (w tym Google) umieszcza linki rekrutacyjne w swoich plikach security.txt.

Czy opublikowanie adresu e-mail kontaktu bezpieczeństwa spowoduje otrzymanie dużej ilości spamu?

Jest to najczęstsze obawa operatorów witryn. Istnieje kilka strategii zmniejszania spamu: po pierwsze, zamiast bezpośredniego umieszczania adresów e-mail, opublikuj adres URL do formularza sieciowego zgłaszania problemów bezpieczeństwa (prefiks https://), gdzie możesz dodać CAPTCHA do filtrowania botów; po drugie, użyj dedykowanego aliasu poczty e-mail bezpieczeństwa (np. security@) i skonfiguruj silne filtrowanie spamu; po trzecie, zapewnij szyfrowanie kluczem publicznym PGP — automatyczni wysyłacze spamu nie używają szyfrowania PGP; po czwarte, jasno określ w swojej Polityce, że akceptujesz tylko raporty związane z lukami w zabezpieczeniach. W praktyce większość witryn, które wdrożyły security.txt, zgłasza znikomy wzrost spamu, ale znaczny wzrost liczby raportów o lukach.

Czy security.txt wymaga podpisu cyfrowego? Jak to zrobić?

RFC 9116 zaleca (ale nie wymaga) używania podpisów tekstowych OpenPGP do cyfrowego podpisywania security.txt, aby badacze mogli zweryfikować, że plik rzeczywiście został oficjalnie opublikowany przez witrynę i nie został zmodyfikowany przez atakujących. Metoda polega na użyciu GPG do podpisania pliku w trybie clearsign: gpg --clearsign -o security.txt.sig security.txt, a następnie użyciu podpisanej zawartości (rozpoczynającej się od -----BEGIN PGP SIGNED MESSAGE-----) jako ostatecznej zawartości security.txt. Jest to jednak operacja zaawansowana — większość witryn może normalnie funkcjonować bez podpisywania.

Jak powinienem skonfigurować Nginx/Apache/Caddy dla security.txt?

Podstawowe wymagania konfiguracyjne: zapewnij dostępność ścieżki /.well-known/security.txt, Content-Type zwraca text/plain, musi być używany HTTPS i nie przekierowuj tej ścieżki (szczególnie nie przekierowuj do innych domen). Nginx może używać dokładnego dopasowania lokalizacji: location = /.well-known/security.txt { default_type text/plain; alias /ścieżka/do/security.txt; }; Apache powinien upewnić się, że .htaccess nie blokuje dostępu do katalogu .well-known; Caddy może użyć handle_path do bezpośredniego określenia.

Moja witryna jest bardzo mała (blog osobisty/projekt open source) — czy nadal potrzebuję security.txt?

Jest to wysoce zalecane. Niezależnie od rozmiaru witryny, o ile posiadasz dane użytkowników lub świadczysz usługi w Internecie, mogą istnieć luki w zabezpieczeniach. Koszt wdrożenia security.txt jest niezwykle niski — generowanie za pomocą tego narzędzia zajmuje tylko 2 minuty i wymaga umieszczenia jednego pliku. Duże firmy, takie jak Google i GitHub, go używają, a indywidualni programiści i projekty open source również mogą go używać. Jest to niezwykle opłacalna praktyka bezpieczeństwa: prawie zerowy koszt, a jednocześnie daje badaczom działającym w dobrej wierze, którzy znajdą luki, kanał do poinformowania Cię o problemach, zamiast milczącego opuszczenia lub publicznego ujawnienia.

Jaka jest różnica między security.txt a robots.txt?

Oba są standardowymi plikami tekstowymi umieszczonymi w katalogu /.well-known/ (lub katalogu głównym), ale ich przeznaczenie jest zupełnie inne: robots.txt jest przeznaczony dla robotów wyszukiwarek, informując je, których ścieżek nie indeksować; security.txt jest przeznaczony dla badaczy bezpieczeństwa, informując ich, jak się z Tobą skontaktować, jeśli znajdą luki. Jeden jest przeznaczony dla wyszukiwarek, drugi dla badaczy bezpieczeństwa — uzupełniają się wzajemnie bez konfliktów i mogą być wdrażane jednocześnie.

Rozwiązywanie problemów

Dostęp do /.well-known/security.txt zwraca błąd 404

Istnieją trzy częste przyczyny: po pierwsze, plik nie jest umieszczony w prawidłowej lokalizacji — potwierdź, że ścieżka to plik security.txt w folderze .well-known w katalogu głównym witryny (pamiętaj, że .well-known to ukryty katalog zaczynający się od kropki); po drugie, konfiguracja serwera WWW blokuje dostęp do katalogów zaczynających się od kropki (reguły .htaccess Apache lub deny Nginxa mogą blokować katalogi plików kropkowych); po trzecie, reguły przepisywania Nginxa/Apache (takie jak tryb historii routingu frontendu) przekazują żądania do index.html. Rozwiązanie: sprawdź ścieżkę pliku i jawnie dodaj regułę lokalizacji dla /.well-known/security.txt w konfiguracji serwera.

Dostęp do security.txt przekierowuje do strony logowania lub strony głównej

Wiele aplikacji jednostronicowych (SPA) lub witryn z uwierzytelnianiem przekierowuje wszystkie niepasujące ścieżki do strony głównej lub strony logowania. Uniemożliwia to zautomatyzowanym narzędziom znalezienie security.txt. Rozwiązanie: dodaj wyjątek dla ścieżki /.well-known/security.txt w konfiguracji serwera, aby ta ścieżka zwracała zawartość pliku bezpośrednio, pomijając routingu SPA lub przetwarzanie oprogramowania pośredniczącego uwierzytelniania. Jest to najczęstsza pułapka podczas wdrażania security.txt.

Przeglądarka pobiera security.txt zamiast wyświetlać zawartość

Dzieje się tak, ponieważ serwer zwraca nieprawidłowy Content-Type, prawdopodobnie ustawiony na application/octet-stream lub inny typ binarny zamiast text/plain. Rozwiązanie: jawnie ustaw Content-Type na text/plain; charset=utf-8 dla security.txt w konfiguracji serwera WWW. Nginx wymaga default_type text/plain lub add_header Content-Type text/plain; Apache zwykle obsługuje to automatycznie, ale jeśli wystąpią problemy, możesz użyć dyrektywy AddType, aby wymusić określenie.

Wprowadzono adres e-mail w polu Contact, ale pojawia się błąd formatu

Wartości pól Contact muszą zawierać prefiksy URI: adresy e-mail muszą zaczynać się od mailto: (np. mailto:security@example.com, a nie tylko security@example.com), adresy URL sieci Web muszą zaczynać się od https:// (a nie tylko example.com/security), a numery telefonów muszą zaczynać się od tel:. Jest to jawnie wymagane przez standardy RFC 9116 — ponieważ pole Contact obsługuje wiele metod kontaktu, brak prefiksów uniemożliwia parserom określenie typu.

Format czasu Expires jest wyświetlany jako nieprawidłowy

Expires musi używać czasu UTC w formacie ISO 8601 w formacie RRRR-MM-DDTHH:MM:SSZ, z literą Z na końcu wskazującą strefę czasową UTC (nie pisz przesunięć strefy czasowej lokalnej, takich jak +01:00). Poprawny przykład: 2027-12-31T23:59:59Z. Nie używaj innych formatów, takich jak 2027/12/31, 31 gru 2027 lub 2027-12-31 23:59:59 — są one niezgodne ze standardem.

Wdrożono security.txt, ale narzędzia do wykrywania online nadal mówią, że nie można go znaleźć

Sprawdź następujące kwestie: po pierwsze, upewnij się, że dostęp używa HTTPS (dostęp przez HTTP się nie liczy — RFC wymaga HTTPS); po drugie, upewnij się, że poprawny dostęp jest możliwy zarówno w domenie z www, jak i bez www (jeśli Twoja witryna istnieje w obu wersjach domeny, zaleca się zadeklarowanie domeny głównej w polu Canonical i umieszczenie security.txt w obu domenach lub ustawienie poprawnych przekierowań 301); po trzecie, sprawdź, czy pamięć podręczna CDN została wyczyszczona ze starej zawartości; po czwarte, potwierdź, że serwer nie zwraca przekierowań (301/302) do innych adresów URL w ścieżce security.txt — RFC określa, że przekierowania mogą być odrzucane przez narzędzia.

Słownik

RFC 9116
Oficjalny dokument standardowy security.txt opublikowany przez IETF, numer 9116, opublikowany w kwietniu 2022 r. Definiuje wszystkie szczegóły specyfikacji formatu pliku security.txt, pól, ścieżek wdrażania, typów MIME itp. i jest autorytatywną podstawą implementacji security.txt.
Katalog .well-known
Standardowy katalog sieci Web zdefiniowany przez RFC 8615, używany do przechowywania ustandaryzowanych plików metadanych dla witryn (takich jak security.txt, robots.txt, apple-app-site-association itp.), o stałej ścieżce folderu .well-known w katalogu głównym witryny.
VDP (Polityka Ujawniania Luk)
Polityka Ujawniania Luk, która opisuje, jakie testy bezpieczeństwa witryna zezwala, jak zgłaszać luki, zobowiązania dotyczące czasu reakcji, przepisy dotyczące bezpiecznej przystani prawnej itp. Pole Policy w security.txt powinno prowadzić do strony VDP.
Szyfrowanie PGP/GPG
Pretty Good Privacy/GNU Privacy Guard, standard szyfrowania asymetrycznego. Badacze bezpieczeństwa używają klucza publicznego witryny do szyfrowania raportów o lukach, a tylko witryna posiadająca klucz prywatny może je odszyfrować, zapobiegając przechwyceniu szczegółów luki podczas transmisji.
ISO 8601
Format reprezentacji daty i czasu opracowany przez Międzynarodową Organizację Normalizacyjną; RFC 9116 wymaga, aby pole Expires używało tego formatu w czasie UTC (np. 2027-12-31T23:59:59Z, gdzie Z wskazuje strefę czasową UTC).
Galeria Sław (Podziękowania za bezpieczeństwo)
Strona podziękowań, na którą wskazuje pole Acknowledgments, która publicznie rejestruje nazwiska/identyfikatory badaczy, którzy zgłosili witrynie luki w zabezpieczeniach, służąc jako publiczne uznanie wkładu w badania bezpieczeństwa.
Haker White Hat
Badacze bezpieczeństwa, którzy odkrywają i odpowiedzialnie ujawniają luki w zabezpieczeniach w celach dobrej wiary, w przeciwieństwie do złośliwych hakerów (czarnych kapeluszy), którzy wykorzystują luki do ataków. security.txt zapewnia formalny kanał komunikacji dla badaczy white hat.
Kanoniczny adres URL
Pole Canonical w security.txt deklaruje oficjalny adres URL samego pliku, zapobiegając umieszczaniu przez atakujących sfałszowanych plików security.txt w innych ścieżkach lub domenach w celu oszukania badaczy.

Szybka referencja pól security.txt RFC 9116

Poniżej znajdują się wszystkie pola zdefiniowane przez standard security.txt i ich wymagania:

Nazwa polaWymagane/OpcjonalneWiele dozwolone?Format wartościOpis
Contact✅ Wymagane✅ Wiele wierszy dozwolonychURI mailto:/https:/tel:Informacje kontaktowe bezpieczeństwa, obsługuje formaty poczty e-mail, adresu URL sieci Web i telefonu
Expires✅ Wymagane❌ Dokładnie jednoCzas UTC ISO 8601Czas wygaśnięcia zawartości pliku; po wygaśnięciu informacje są uważane za potencjalnie nieprawidłowe
Encryption⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Adres URL lokalizacji klucza publicznego PGP do szyfrowania wrażliwych raportów o lukach
Acknowledgments⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Adres URL Galerii Sław Bezpieczeństwa/strony podziękowań, publicznie dziękuje zgłaszającym luki
Policy⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Adres URL strony Polityki Ujawniania Luk (VDP), opisuje zasady i zakres zgłaszania
Hiring⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Adres URL strony rekrutacji zespołu bezpieczeństwa, rekrutuje talenty spośród badaczy bezpieczeństwa
Canonical⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Kanoniczny adres URL samego pliku security.txt, zapobiega fałszowaniu
Preferred-Languages⬜ Opcjonalne❌ Dokładnie jednoKody języków (oddzielone przecinkami)Języki obsługiwane przez zespół bezpieczeństwa, np. en, pl, de
CSAF⬜ Opcjonalne✅ Wiele wierszy dozwolonychURI https://Adres URL metadanych dostawcy Common Security Advisory Framework

Przykłady konfiguracji security.txt dla typowych serwerów WWW

Po wygenerowaniu zawartości security.txt skonfiguruj poprawną ścieżkę dostępu i Content-Type na swoim serwerze:

Serwer WWWKluczowe punkty konfiguracjiUwagi
Nginxlocation = /.well-known/security.txt { default_type text/plain; alias /var/www/.well-known/security.txt; add_header Cache-Control "public, max-age=3600"; }Użyj dokładnego dopasowania (=), określ default_type jako text/plain, aby zapobiec traktowaniu plików txt przez Nginxa jako plików binarnych
ApacheUpewnij się, że katalog .well-known nie jest blokowany przez reguły Deny w .htaccess; po prostu umieść plik w folderze .well-known w katalogu głównym witrynyApache domyślnie zwraca text/plain dla plików .txt, ale potwierdź, że reguły mod_rewrite nie przepisują tej ścieżki
Caddyhandle_path /.well-known/security.txt { file_server { root /var/www } }Caddy domyślnie używa HTTPS i poprawnie obsługuje typy MIME plików txt; najprostsza konfiguracja
Cloudflare Pages/Vercel/NetlifyUmieść security.txt w public/.well-known/security.txt; po wdrożeniu statyczne udostępnianie umożliwi poprawny dostępPlatformy hostingu statycznego zwykle automatycznie obsługują poprawny Content-Type; potwierdź, że platformy nie ignorują katalogu .well-known, gdy zaczyna się od kropki
CDN/Reverse ProxyUpewnij się, że CDN lub WAF nie blokują ani nie buforują security.txt zbyt długo; zalecane ustawienie Cache-Control to max-age=3600 (1 godzina)Pamiętaj, aby wyczyścić pamięć podręczną CDN po aktualizacji security.txt, w przeciwnym razie badacze mogą zobaczyć stare wersje

Privacy & Security

Wszystkie operacje konfiguracyjne w tym generatorze działają całkowicie lokalnie w Twojej przeglądarce. Żadne z wprowadzonych informacji — adresy e-mail kontaktu bezpieczeństwa, adresy URL kluczy PGP, linki do ofert pracy ani żadne inne dane — nie są wysyłane na żaden serwer, ani nie są zbierane ani przechowywane. Cała wprowadzona zawartość jest natychmiast usuwana po odświeżeniu lub zamknięciu strony. Wygenerowana zawartość pliku security.txt istnieje tylko w Twoim schowku i na serwerach, na których ją wdrażasz; GeekFormat nie zachowuje żadnych kopii.