security.txt anlegen: der Sicherheitskontakt nach RFC 9116
Findet jemand eine Lücke auf Deiner Website, muss er erst herausfinden, wem er sie melden kann. Eine kleine Textdatei an einem festen Ort nimmt ihm diese Suche ab, solange jemand sie aktuell hält.
Stand: 05.11.2026
Ein fester Ort für Meldungen
Wer auf eine Sicherheitslücke stößt, landet ohne festen Kontakt beim Impressum, beim allgemeinen Kundenpostfach oder im Kontaktformular. Einen Hinweis auf eine offene Datenbank liest dort vielleicht der Vertrieb, oder er geht im Spam unter. Mancher Finder gibt nach dem zweiten Versuch auf.
RFC 9116 bestimmt deshalb einen festen Ort: https://beispiel.de/.well-known/security.txt. Die Datei ist reiner Text (text/plain, UTF-8) und muss über HTTPS erreichbar sein. Sie gilt nur für genau den Host, unter dem sie liegt. shop.beispiel.de braucht also eine eigene. Die alte Ablage direkt unter /security.txt ist nur noch aus Kompatibilitätsgründen erlaubt; gibt es beide, zählt die unter /.well-known/.
Im August 2026 haben das BSI und die Allianz für Cyber-Sicherheit Website-Betreiber ausdrücklich aufgerufen, die Datei anzulegen. Nach Messungen des BSI hatten zu diesem Zeitpunkt nur 1,8 Prozent der Websites in Deutschland eine. Das BSI scannt im Projekt Cyberdome selbst Websites und schickt Funde direkt an den hinterlegten Kontakt.
Die beiden Pflichtfelder
| Feld | Bedeutung |
|---|---|
Contact: |
wohin Meldungen gehen, als URI: mailto:, https: oder tel:; darf mehrfach vorkommen, der erste Eintrag ist der bevorzugte |
Expires: |
Datum und Uhrzeit, ab dem die Angaben als veraltet gelten; genau einmal, im Format nach RFC 3339 |
Pflicht ist das Feld, weil ein Kontakt von vor drei Jahren womöglich zu einer längst gelöschten Adresse führt. Wer die Datei liest, soll eine abgelaufene deshalb als überholt behandeln. RFC 9116 empfiehlt, Expires weniger als ein Jahr in die Zukunft zu legen.
Optionale Felder
| Feld | Inhalt |
|---|---|
Encryption: |
Link auf Deinen öffentlichen OpenPGP-Schlüssel, nie der Schlüssel selbst |
Policy: |
Link auf Deine Richtlinie zum Umgang mit Meldungen |
Acknowledgments: |
Link auf eine Danke-Seite für Finder |
Preferred-Languages: |
Sprachen für Meldungen, etwa de, en; ohne Angabe gilt Englisch |
Canonical: |
die Adresse oder Adressen, unter denen die Datei offiziell liegt |
Hiring: |
Stellenangebote im Sicherheitsbereich |
CSAF: |
Verweis auf provider-metadata.json, wenn Du Sicherheitshinweise im CSAF-Format veröffentlichst; nicht Teil von RFC 9116, aber bei securitytxt.org aufgeführt |
Alle Links müssen mit https:// beginnen. Zeilen mit # am Anfang sind Kommentare.
Die RFC empfiehlt, die Datei mit einer OpenPGP-Klartextsignatur zu versehen. Zusammen mit Canonical kann ein Finder dann prüfen, dass die Datei von Dir stammt und an ihrem Platz liegt. Für eine kleine Firma ohne gepflegten PGP-Schlüssel ist das kein Muss.
Eine vollständige Datei
# Sicherheitskontakt für beispiel.de
Contact: mailto:sicherheit@beispiel.de
Contact: https://beispiel.de/sicherheit/melden
Expires: 2027-10-31T23:00:00Z
Encryption: https://beispiel.de/.well-known/pgp-key.asc
Preferred-Languages: de, en
Canonical: https://beispiel.de/.well-known/security.txt
Policy: https://beispiel.de/sicherheit/richtlinie
Acknowledgments: https://beispiel.de/sicherheit/danke
Schreib das Z am Ende der Uhrzeit groß. Die RFC erlaubt zwar auch ein kleines, aber nicht jedes Werkzeug liest es.
Worauf es im Alltag ankommt
- Trag eine Rollenadresse ein.
sicherheit@beispiel.deübersteht Urlaub und Kündigung,m.mueller@beispiel.denicht. Expiresläuft ab, ob Du daran denkst oder nicht. Ein Kalendereintrag zwei Monate vorher genügt; bequemer ist ein Deployment, das die Datei jedes Mal mit frischem Datum erzeugt.- Ein Kontakt, den niemand liest, ist schlimmer als keiner. Der Finder wartet, hält still und veröffentlicht am Ende womöglich ohne Deine Antwort. Leg fest, wer das Postfach betreut und bis wann eine erste Rückmeldung rausgeht.
- Mit
Policyverlinkst Du eine kurze Richtlinie: welche Systeme gemeint sind, was Finder tun dürfen, wann Du Dich meldest. Die Datei allein erlaubt niemandem, Deine Systeme zu testen. Das stellt RFC 9116 ausdrücklich klar. - Manche CMS liefern für jeden unbekannten Pfad eine HTML-Seite mit Status 200 aus. Ruf die Adresse einmal mit
curl -Iauf und schau, obtext/plainzurückkommt.
security.txt prüfen
Für diesen Punkt ruft ZwoWebCheck eine Adresse zusätzlich ab: /.well-known/security.txt auf dem Host, den Du eingegeben hast, und nur über HTTPS. Einer Weiterleitung folgt die Prüfung einmal, wenn sie per HTTPS auf derselben Domain bleibt, etwa von beispiel.de auf www.beispiel.de. Die Datei zählt, wenn sie als Text mit mindestens einer Contact-Zeile ankommt. Der Bericht nennt den ersten Kontakt und das Ablaufdatum. Ist das Datum vorbei, gibt es eine Warnung; fehlt Expires oder die ganze Datei, einen Hinweis mit dem, was mindestens hineingehört.