Sicherheit
Web-Sicherheit ist die Praxis, Websites und deren Benutzer vor Schäden durch böswillige Dritte zu schützen, die allgemein als Angreifer bezeichnet werden.
Der verursachte Schaden kann reputationsschädigend, finanziell oder sogar physisch sein. Er kann Daten betreffen, die vertraulich bleiben sollten, oder Handlungen, die nur bestimmten Benutzern zugänglich sein sollten. Die Motive der Angreifer könnten finanzieller, politischer oder persönlicher Natur sein.
In diesem Teil von MDN haben wir Leitfäden geschrieben, um Webentwicklern zu helfen, ihre Websites und Benutzer gegen diese Angriffe zu schützen.
Die Dokumentation ist in vier Hauptabschnitte gegliedert:
Auf dieser Seite werden wir jeden dieser Abschnitte einführen und die Leitfäden auflisten, die sie enthalten. Zuerst werden wir jedoch die grundlegenden Sicherheitspraktiken auflisten, die Webentwickler befolgen sollten.
Grundlegende Sicherheitspraktiken
Web-Sicherheit kann überwältigend sein: Es gibt viele potenzielle Bedrohungen, Abwehrmaßnahmen sind oft komplex und vielschichtig, und die Bedrohungen, die Sie berücksichtigen müssen, hängen stark davon ab, was Ihre Website genau macht. In diesem Abschnitt fassen wir zusammen, was wir für die wichtigsten Maßnahmen halten, die Sie ergreifen können, um Schutz gegen die meisten Bedrohungen zu bieten, denen Sie begegnen werden.
-
Nutzen Sie HTTPS, um alle Seiten und Subressourcen Ihrer Website bereitzustellen.
-
Setzen Sie eine Content Security Policy (CSP) für Ihre Website.
-
Setzen Sie nach Möglichkeit eine strikte CSP, aber wenn nicht, setzen Sie zumindest eine Richtlinie, die Inline-JavaScript verbietet.
-
Setzen Sie die
frame-ancestorsCSP-Direktive, um zu steuern, ob Seiten in verschachtelten Browser-Kontexten eingebettet werden können. -
Setzen Sie die
require-trusted-types-forCSP-Direktive, um sicherzustellen, dass Inhalte gesäubert werden, bevor sie an potenziell gefährliche APIs übergeben werden.
-
-
Kontrollieren Sie Anfragen von anderen Ursprüngen: überlegen Sie, ob und unter welchen Umständen Sie anderen Ursprüngen erlauben möchten, Anfragen an Ihre Website zu richten, und verwenden Sie Fetch-Metadaten, um dies zu steuern.
-
Beschränken Sie den Zugriff auf alle Cookies, die Ihre Website setzt. Insbesondere:
-
Verarbeiten Sie Eingaben sicher: wenn Ihre Website Eingaben von Benutzern oder einem anderen System akzeptiert, validieren Sie diese. Bevor Sie Eingaben in die Seiten Ihrer Website integrieren, führen Sie Ausgabe-Codierung oder Sanitisierung durch.
-
Verwenden Sie Subresource Integrity für alle Skripte, die Sie aus externen Quellen laden (wie CDNs).
-
Verwenden Sie starke Authentifizierungsmethoden: wenn Sie Benutzer 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 Einmalkennwörter (TOTP) sicherer als herkömmliche Passwörter.
-
Befolgen Sie gute betriebliche Sicherheitspraktiken: kontrollieren Sie den Zugriff auf den Quellcode Ihres Projekts, handhaben Sie Geheimnisse sicher und kontrollieren Sie Ihre Abhängigkeiten.
Siehe auch die Richtlinien für sichere Webanwendungen.
Angriffe
Der Abschnitt Angriffe umfasst Leitfäden zu gängigen Angriffen auf Websites. Ein Angriff ist eine spezifische Technik, die ein Angreifer verwenden kann, um Websites oder deren Benutzer 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:
Abwehrmaßnahmen
Der Abschnitt Abwehrmaßnahmen umfasst Leitfäden zu Funktionen oder Praktiken, die Sie nutzen können, um sich gegen verschiedene Angriffe zu schützen. Im Allgemeinen besteht eine Viele-zu-Viele-Beziehung zwischen Angriffen und Abwehrmaßnahmen. Das heißt, eine einzige Abwehrmaßnahme kann gegen mehrere Angriffe schützen, und um sich gegen einen einzelnen Angriff zu verteidigen, sind möglicherweise mehrere Abwehrmaßnahmen erforderlich, um eine Tiefenverteidigung zu gewährleisten.
In diesem Abschnitt dokumentieren wir die folgenden Abwehrmaßnahmen:
- Zertifikattransparenz
- Eingabevalidierung
- Mixed Content Blocking
- Betriebliche Sicherheit
- Same-origin policy
- Sichere Kontexte
- Subresource Integrity
- Transport Layer Security (TLS)
- Benutzeraktivierung
Beachten Sie, dass nicht alle Abwehrmaßnahmen in diesem Abschnitt beschrieben werden: Einige, wie CSP oder trusted types, werden im Rahmen 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 diese implementiert sind.
Bedrohungsmodellierung ist ein Prozess, den Webentwickler befolgen können, um eine strukturierte Darstellung der potenziellen Bedrohungen zu entwickeln, denen ihre Website ausgesetzt ist, und der entsprechenden Abwehrmaßnahmen, die sie ergreifen sollten.
Das heißt, Bedrohungsmodellierung hilft Ihnen zu verstehen, gegen welche Angriffe Sie sich verteidigen müssen und wie Sie sich gegen sie verteidigen können.
Authentifizierung
Authentifizierung ist der Prozess der Überprüfung, ob eine Entität—wie ein Benutzer einer Website—tatsächlich diejenige ist, für die sie sich ausgibt. Sie werden wahrscheinlich über Authentifizierung nachdenken müssen, wenn Sie möchten, dass sich Benutzer auf Ihrer Website anmelden.
Wenn sich Benutzer auf Ihrer Website anmelden können, gibt es normalerweise Dinge, die angemeldete Benutzer tun können, oder Daten, auf die sie zugreifen können, die Sie nicht allgemein zugänglich machen möchten. Dies macht den Zugriff auf Benutzerkonten zu einem der wertvollsten Ziele für Angreifer.
In dieser Reihe von Leitfäden werden wir die Haupttechniken untersuchen, die zur Authentifizierung von Benutzern im Web zur Verfügung stehen, und gute Praktiken dafür. Wir beschreiben vier Methoden:
In diesem Abschnitt skizzieren wir auch gute Praktiken für das Sitzungsmanagement, mit dem sich eine Website den Anmeldestatus eines Benutzers merkt.
HTTP Observatory
Das HTTP Observatory-Werkzeug ermöglicht es Ihnen, Ihre Website zu scannen, um zu überprüfen, ob sie bestimmte gute Sicherheitspraktiken befolgt. Unsere Praktischen Leitfäden zur Sicherheitsimplementierung bieten Erklärungen, wie diese Praktiken implementiert werden und gegen welche Bedrohungen sie schützen.