Sicherheit
Websicherheit ist die Praxis, Websites und deren Nutzer vor Schäden zu schützen, die von böswilligen Dritten verursacht werden, die allgemein als Angreifer bezeichnet werden.
Die Art der verursachten Schäden kann reputationsbezogen, finanziell oder sogar physisch sein. Sie kann auf Daten abzielen, die vertraulich für Nutzer bleiben sollten, oder auf Aktionen, die nur bestimmten Nutzern zur Verfügung stehen sollten. Die Motivationen der Angreifer können finanziell, politisch oder persönlich sein.
In diesem Teil von MDN haben wir Leitfäden erstellt, um Webentwicklern zu helfen, zu verstehen, wie sie ihre Websites und deren Nutzer vor diesen Angriffen schützen können.
Die Dokumentation ist in vier Hauptabschnitte unterteilt:
Auf dieser Seite stellen wir jeden dieser Abschnitte vor und listen die enthaltenen Leitfäden auf. Zuerst jedoch listen wir die grundlegenden Sicherheitspraktiken auf, die Webentwickler befolgen sollten.
Grundlegende Sicherheitspraktiken
Websicherheit kann überwältigend sein: Es gibt viele potenzielle Bedrohungen, Verteidigungen sind oft komplex und vielschichtig, und die Menge der Bedrohungen, die Sie berücksichtigen müssen, hängt stark davon ab, was genau Ihre Website tut. In diesem Abschnitt fassen wir zusammen, was unserer Meinung nach die wichtigsten Maßnahmen sind, die Sie ergreifen können, um gegen die meisten Bedrohungen, auf die Sie stoßen werden, Schutz zu bieten.
-
Verwenden Sie HTTPS, um alle Seiten und Unterressourcen Ihrer Website bereitzustellen.
-
Setzen Sie eine Content Security Policy (CSP) für Ihre Website fest.
-
Wenn möglich, setzen Sie eine strenge CSP, aber wenn nicht, setzen Sie zumindest eine Richtlinie fest, die inline JavaScript verbietet.
-
Setzen Sie die
frame-ancestors-CSP-Direktive, um zu steuern, ob Seiten in verschachtelten Browsing-Kontexten eingebettet werden können. -
Setzen Sie die
require-trusted-types-for-CSP-Direktive, um sicherzustellen, dass Inhalte vor der Weitergabe an potenziell gefährliche APIs bereinigt wurden.
-
-
Kontrollieren Sie Cross-Origin-Anfragen: Überlegen Sie, ob und unter welchen Umständen Sie anderen Ursprüngen erlauben möchten, Anfragen an Ihre Website zu stellen, und verwenden Sie Fetch-Metadaten, um dies zu steuern.
-
Beschränken Sie den Zugriff auf alle Cookies, die Ihre Website setzt. Insbesondere:
-
Handhaben Sie Eingaben sicher: Wenn Ihre Website Eingaben vom Nutzer oder einem anderen System annimmt, validieren Sie sie. Bevor Sie Eingaben in die Seiten Ihrer Website integrieren, führen Sie Ausgabe-Codierung oder Bereinigung durch.
-
Verwenden Sie Subresource Integrity für alle Skripte, die Sie von externen Quellen laden (wie beispielsweise CDNs).
-
Verwenden Sie starke Authentifizierungsmethoden: Wenn Sie Nutzer auf Ihrer Website authentifizieren, verwenden Sie nicht nur Passwörter. Passkeys sind die sicherste Authentifizierungsmethode, aber wenn Sie diese nicht verwenden können, sind zeitbasierte Einmalpasswörter (TOTP) sicherer als traditionelle Passwörter.
-
Befolgen Sie gute betriebssicherheitstechnische Praktiken: Kontrollieren Sie den Zugriff auf den Quellcode Ihres Projekts, handhaben Sie Geheimnisse sicher und kontrollieren Sie Ihre Abhängigkeiten.
Siehe auch die Leitlinien für sichere Webanwendungen.
Angriffe
Der Abschnitt Angriffe enthält Leitfäden zu häufigen Angriffen auf Websites. Ein Angriff ist eine spezifische Technik, die ein Angreifer verwenden kann, um Websites oder ihren Nutzern zu schaden.
Jeder Leitfaden behandelt einen spezifischen Angriff (oder eine Klasse verwandter Angriffe), erklärt, wie er funktioniert, die Bedingungen, unter denen eine Website anfällig wird, und wie man sich dagegen verteidigt.
Die beschriebenen Angriffe umfassen:
Verteidigungen
Der Abschnitt Verteidigungen enthält Leitfäden zu Funktionen oder Praktiken, die Sie verwenden können, um sich gegen verschiedene Angriffe zu schützen. Im Allgemeinen gibt es eine viele-zu-viele-Beziehung zwischen Angriffen und Verteidigungen. Das bedeutet, dass eine einzelne Verteidigung gegen mehrere Angriffe schützen kann und die Verteidigung gegen einen einzelnen Angriff möglicherweise mehrere Verteidigungen erfordert, um eine Verteidigung in der Tiefe bereitzustellen.
In diesem Abschnitt dokumentieren wir die folgenden Verteidigungen:
- Zertifikatstransparenz
- Eingabevalidierung
- Blockierung von gemischten Inhalten
- Betriebssicherheit
- Same-Origin-Policy
- Sichere Kontexte
- Subresource Integrity
- Transport Layer Security (TLS)
- Nutzeraktivierung
Beachten Sie, dass nicht alle Verteidigungen in diesem Abschnitt beschrieben sind: Einige, wie CSP oder trusted types, werden im Bereich der Technologie beschrieben, zu der sie gehören.
Bedrohungsmodellierung
Nicht alle Websites sind anfällig für alle Angriffe: Welche Angriffe ein Entwickler berücksichtigen muss, hängt von den Funktionen ab, die die Website bietet und wie sie implementiert sind.
Bedrohungsmodellierung ist ein Prozess, dem Webentwickler folgen können, um eine strukturierte Darstellung der potenziellen Bedrohungen zu entwickeln, denen ihre Website ausgesetzt ist, und der entsprechenden Verteidigungen, die sie einsetzen sollten.
Das heißt, Bedrohungsmodellierung hilft Ihnen zu verstehen, gegen welche Angriffe Sie sich verteidigen müssen und wie Sie sich dagegen verteidigen können.
Authentifizierung
Authentifizierung ist der Prozess der Überprüfung, dass eine Entität — wie beispielsweise ein Nutzer einer Website — tatsächlich die Person ist, die sie vorgibt zu sein. Sie müssen wahrscheinlich über Authentifizierung nachdenken, wenn Sie möchten, dass Nutzer sich auf Ihrer Website anmelden.
Wenn sich Nutzer auf Ihrer Website anmelden können, gibt es in der Regel Dinge, die angemeldete Nutzer tun können oder auf Daten zugreifen können, die Sie nicht allgemein zugänglich machen möchten. Dadurch wird der Zugriff auf Nutzerkonten zu einem der wertvollsten Ziele für Angreifer.
In dieser Reihe von Leitfäden werden wir uns die Haupttechniken für die Authentifizierung von Nutzern im Web und deren gute Praktiken ansehen. Wir beschreiben vier Methoden:
In diesem Abschnitt umreißen wir auch gute Praktiken für das Sitzungsmanagement, also wie eine Website den Anmeldestatus eines Nutzers speichert.
HTTP Observatory
Das HTTP Observatory-Tool ermöglicht es Ihnen, Ihre Website zu scannen, um zu überprüfen, ob sie bestimmten guten Sicherheitspraktiken folgt. Unsere Praktische Sicherheitsimplementierungs-Leitfäden bieten Erklärungen dazu, wie man diese Praktiken implementiert und gegen welche Bedrohungen sie schützen.