Die wesentliche Sicherheits-Checkliste für Benutzeridentität
Der Aufbau von Benutzeridentitäten ist eine kritische Komponente jeder Anwendung. Benutzernamen und Passwörter zu validieren mag zwar als einfachste Methode erscheinen, aber es gibt viele andere Aspekte zu berücksichtigen.
Einführung
Der Aufbau von Benutzeridentitäten ist eine kritische Komponente jeder Anwendung. Es ermöglicht Ihnen personalisierte Erfahrungen zu bieten, die Datenqualität zu verbessern und die Benutzerbindung zu steigern.
Benutzernamen und Passwörter zu validieren mag zwar als einfachste Methode erscheinen, aber es gibt viele andere Aspekte zu berücksichtigen. Lass uns anfangen!
Infrastruktur
Durchsetzung von HTTPS
Beginnen wir mit den Grundlagen. Zwingen Sie immer die Nutzung von HTTPS (Hypertext Transfer Protocol Secure), um die Datenübertragung im Internet zu verschlüsseln. HTTPS stellt sicher, dass die zwischen dem Gerät des Benutzers und Ihrem Server ausgetauschten Daten vertraulich und manipulationssicher bleiben.
Die Einrichtung von HTTPS mag herausfordernd erscheinen, aber es gibt viele Tools und Dienstleistungen, die Ihnen helfen können:
- Wenn Sie selbst hosten, bietet Let's Encrypt kostenlose SSL/TLS-Zertifikate, die Sie verwenden können, um HTTPS auf Ihrer Website zu aktivieren.
- Wenn Sie einen Cloud-Anbieter verwenden, wie AWS, Azure oder Google Cloud, können Sie deren verwaltete Dienste zur Einrichtung von HTTPS nutzen.
Erlaube keinen öffentlichen Datenbankzugang, begrenze auf vertrauenswürdige Quellen
Obwohl es auch grundlegend erscheinen mag, hat es zahlreiche Sicherheitsverletzungen gegeben, die auf den öffentlichen Zugang zu Datenbanken zurückzuführen sind. Es lohnt sich also, dies hier zu erwähnen.
Erinnern Sie sich immer daran, nie öffentlichen Zugang zu Ihrer Datenbank zuzulassen. Stellen Sie Ihre Datenbank in ein privates Netzwerk und erlauben Sie nur den Zugriff von vertrauenswürdigen Quellen.
Private Tokens sicher verwalten
Private Tokens, wie Zugriffstokens oder API-Schlüssel, werden oft für programmatische Authentifizierung und Autorisierungszwecke verwendet. Um diese Tokens sicher zu verwalten:
- Verwenden Sie kurzlebige Tokens und Refresh-Tokens, um das Risiko unberechtigten Zugriffs zu minimieren.
- Verwenden Sie einen sicheren Token-Speichermechanismus, wie einen Schlüsseltresor, um Tokens vor unberechtigtem Zugriff zu schützen.
- Drehen Sie regelmäßig Token, um sie vor Kompromittierung zu schützen. Einige Protokolle, wie OAuth 2.0, bieten einen Mechanismus zur Token-Rotation.
- Behalten Sie die Kontrolle über die Token-Widerrufung im Falle eines Sicherheitsvorfalls bei.
Wählen Sie ein Passwort-Hash-Algorithmus klug aus
Wenn Sie Erfahrung mit Passwort-Hashing haben, wissen Sie vielleicht, dass es viele Algorithmen gibt, von denen einige nicht mehr als sicher gelten, wie MD5, SHA-1 und SHA-2.
Einige übliche Gründe für ihre Unsicherheit sind:
- Sie wurden nicht speziell für das Passwort-Hashing entworfen, und ihre Rechengeschwindigkeit ist zu schnell, was Brute-Force-Angriffe erleichtert.
- Ihnen fehlt die Verwendung von Salt, was es einfacher macht, für sie Regenbogentabellen zu erstellen.
- Sie sind anfällig für Kollisionsattacken, die es Angreifern ermöglichen, verschiedene Passwörter mit demselben Hash-Wert zu erzeugen.
Industriestandard Passwort-Hashing-Algorithmen, wie bcrypt und Argon2, wurden entworfen, um diese Probleme zu lösen. Aufgrund des begrenzten Umfangs dieses Artikels gehen wir nicht im Detail auf sie ein. Siehe Die Entwicklung des Passwort-Hashing für mehr Informationen.
Lernen und strikt einhalten offener Standards
Offene Standards wie OAuth 2.0 und OpenID Connect (OIDC) bieten sichere und standardisierte Ansätze für die Benutzerauthentifizierung und -autorisierung. Sie sind durch die Industrie getestet und weit verbreitet.
Die falsche Implementierung kann jedoch zu Sicherheitslücken führen, selbst für große Teams mit erfahrenen Entwicklern. Ein aktuelles Beispiel ist die in Expo entdeckte OAuth-Schwachstelle, ein beliebtes Framework zur Entwicklung von mobilen Apps. Es dient als gutes Beispiel dafür, wie ein kleiner Fehler zu einem Sicherheitsleck führen kann.
Verschlüsseln Sie Daten im Ruhezustand
Daten im Ruhezustand, wie gespeicherte Benutzerinformationen oder Datenbanksicherungen, sollten mit einem starken Verschlüsselungsalgorithmus verschlüsselt werden. Dies stellt sicher, dass, selbst wenn die Daten kompromittiert werden, sie ohne den Entschlüsselungsschlüssel nicht gelesen werden können. Überprüfen Sie, ob Ihr Cloud-Anbieter diese Funktion unterstützt, da sie häufig für Compliance-Zwecke erforderlich ist.
Firewalls einrichten
DDoS (Distributed Denial of Service)-Angriffe, obwohl alt, bleiben eine bedeutende Bedrohung. Laut dem Cloudflare-DDoS-Bedrohungsbericht für 2022 stieg die Menge an HTTP-DDoS-Angriffsverkehr im Jahresvergleich um 79 %. Anstatt eine eigene Lösung zu entwickeln, ist es eine gute Idee, verwaltete Firewalls einzurichten und Benachrichtigungsprogramme einzusetzen, um dieses Risiko zu minimieren.
##Apps und Clients
Verbessern Sie das Sicherheitslevel für öffentliche Clients
Öffentliche Clients, wie mobile Apps oder Single-Page-Anwendungen, sind anfälliger für Sicherheitslücken. Auch wenn Sie sie anbieten, sollten Sie sie in Ihrem Sicherheitsmodell als nicht vertrauenswürdige Quellen behandeln. Zum Beispiel:
- Wenn Sie OAuth 2.0 verwenden, nutzen Sie Proof Key for Code Exchange (PKCE), um sich gegen Authentifizierungscode-Interzeptionsangriffe zu schützen.
- Erzwingen Sie Content Security Policy (CSP), um bestimmte Arten von Angriffen, einschließlich Cross-Site Scripting (XSS) und Dateninjektionsangriffe, abzuwehren.
Vertraue niemals öffentlichen Eingabedaten
Benutzereingaben können eine bedeutende Quelle für Sicherheitslücken sein, die oft übersehen werden. Einige übliche Arten von übersehenen Sicherheitslücken sind Cross-Site Scripting (XSS) und SQL Injection. Stellen Sie sicher, dass Sie alle Benutzereingabedaten validieren und bereinigen, bevor Sie sie verwenden.
Behalten Sie Aktivitäten im Auge
Das Führen eines Prüfpfades von Benutzeraktivitäten hilft bei der Erkennung und Untersuchung von Sicherheitsvorfällen. Protokollieren und überwachen Sie Benutzeraktionen, wie zum Beispiel Login-Versuche, Passwortänderungen oder sensible Operationen. Die Analyse dieser Logs kann wertvolle Hinweise auf mögliche Sicherheitsverletzungen oder verdächtige Aktivitäten liefern.
Implementieren Sie eine solide Authentifizierung
Implementieren Sie einen starken Authentifizierungsmechanismus, um die Identität der Benutzer zu überprüfen. Wie bereits erwähnt, sollten Sie bei der Authentifizierung sichere Protokolle wie OAuth 2.0 oder OpenID Connect in Betracht ziehen. Weitere Informationen finden Sie unter CIAM 101: Authentifizierung, Identität, SSO.
Solide Autorisierung aufbauen (z.B. Rollenbasierte Zugriffskontrolle implementieren)
Neben der Authentifizierung sollten auch geeignete Autorisierungsmechanismen vorhanden sein. Implementieren Sie rollenbasierte Zugriffskontrolle (RBAC), um sicherzustellen, dass Benutzer nur Zugriff auf die Ressourcen und Aktionen haben, die sie durchführen dürfen. Weitere Informationen finden Sie unter CIAM 102: Autorisierung & Rollenbasierte Zugriffskontrolle.
Implementieren Sie Multi-Faktor-Authentifizierung (MFA)
Multi-Faktor-Authentifizierung (MFA) fügt eine zusätzliche Sicherheitsebene hinzu, indem die Benutzer aufgefordert werden, einer oder mehrere vierlastungen, die sicherstellen, dass ein vierlastungscode zu ihrer mobilen Germaid, um sie unter einer mobilen Anwendung zu verwenden, ihre mobile Germaid aufzurufen. Ein weiteres gutes Beispiel für MFA ist, wenn GitHub Benutzer auffordert, einen einmaligen Code aus ihrer mobilen App einzugeben, der auf der Webseite angezeigt wird, um sensible Operationen wie das Löschen eines Repositoriums durchzuführen.
Ein MFA ist jedoch für die meisten frühen Startups nicht notwendig, insbesondere wenn Sie keine Lösung aus der Box haben. Es kann übermäßig sein und sich negativ auf Ihr Benutzererlebnis auswirken.
Kultur
Die oben gegebenen Ratschläge decken hauptsächlich "passive" Sicherheitsmaßnahmen ab, die bekannt sind, bevor ein Sicherheitsvorfall eintritt. Es gibt jedoch auch "aktive" Sicherheitsmaßnahmen, die Sie ergreifen können, um Ihre allgemeine Sicherheitslage zu verbessern, die auf lange Sicht effektiver sind.
Bilden Sie Ihr Team und Ihre Benutzer über Phishing und social engineering
Phishing-Angriffe und Social Engineering sind wichtig, weil sie viele der oben genannten Sicherheitsmaßnahmen nutzlos machen können. Zum Beispiel, wenn ein Benutzer dazu verleitet wird, sein Passwort preiszugeben oder auf ein scheinbar unschuldiges Katzenbild zu klicken, das Malware enthält, wird die Stärke Ihres Passwort-Hashing-Algorithmus oder Ihrer Firewall-Regeln irrelevant.
Die meisten Menschen finden Sicherheitsschulungen langweilig, und oft sind sie es auch. Ändern Sie also die Art und Weise, wie Sie Ihr Team und Ihre Benutzer schulen. Zum Beispiel können Sie eine Phishing-E-Mail simulieren, bevor ein tatsächlicher Angreifer das tut, und zeigen, wie man sie erkennt. Sie können sogar Belohnungen für das Melden der E-Mail an das Sicherheitsteam anbieten.
Richten Sie DevSecOps ein
Zusätzlich zu manuellen Sicherheitsüberprüfungen können Sie auch DevSecOps-Praktiken implementieren, um Sicherheitschecks zu automatisieren. Zum Beispiel können Sie eine CI/CD-Pipeline einrichten, um statische Codeanalyse-Tools wie CodeQL zu betreiben und automatisch Penetrationstests mit Tools wie OWASP ZAP durchzuführen.
Die strengste Konfiguration annehmen, ohne das Benutzererlebnis zu beeinträchtigen
In Bezug auf die Sicherheit sollten Sie immer für die sicherste Konfiguration optieren, die das Benutzererlebnis nicht negativ beeinflusst. Vermeiden Sie Abkürzungen oder Kompromisse bei der Sicherheit für Bequemlichkeit. Die Sicherheit sollte immer oberste Priorität haben.
Als Startup oder unabhängiger Entwickler haben Sie möglicherweise das Gefühl, dass Ihnen die notwendigen Ressourcen fehlen, um diese Maßnahmen umzusetzen. Trotzdem gibt es professionelle Sicherheitsdienste, die kostenlose oder startup-freundliche Optionen anbieten. Nehmen Sie sich die Zeit, sie zu überprüfen und in Betracht zu ziehen, sie zu nutzen.
Fazit
Sicherheit ist ein komplexes Thema und es ist unmöglich, alles in einem einzigen Artikel abzudecken. Wir hoffen, dass dieser Artikel Ihnen geholfen hat, ein stärkeres Gefühl für Sicherheit für sich selbst oder Ihr Team aufzubauen. Wenn Sie eine neue App entwickeln, sollten Sie auch Logto ausprobieren, eine Plattform, die Ihnen hilft, die Benutzeridentitäten Ihres Produkts mit minimalem Aufwand zu entwickeln, zu verwalten und zu sichern.