Sichere Programmierung von Web-Anwendungen - Authentifizierung
Zahlreiche erfolgreiche Angriffe auf bekannte Web-Anwendungen finden wöchentlich Einzug in einschlägige Medien. Grund genug bei der Entwicklung eigener Anwendung - egal ob zur rein internen Nutzung oder mit öffentlichem Zugang - sich mit den Hintergründen der "Web Application Security" zu beschäftigen.
Dies ist ein Auszug aus dem Buch und dem Onlinekurs "Sicherheit von Web-Anwendungen: Für Software-Entwickler und Software-Projektleiter".
In diesem Artikel werden lediglich grundsätzliche Sicherheitsanforderungen an die Nutzerauthentifizierung genannt. Diese sind jeweils Anwendungs- bzw. Programmiersprachen-spezifisch umzusetzen.
Beschreibung
Die sichere Nutzerauthentifizierung spielt eine zentrale Rolle für Anwendungen aller Art. Da zahlreiche Authentifizierungsmethoden existieren und ein großer Unterschied bei den Möglichkeiten zur Authentifizierung ihrer Nutzer für offene Web-Anwendungen im Vergleich zu Intranetapplikationen besteht, werden im Folgenden lediglich grundsätzliche Sicherheitsmaßnahmen definiert.
Gängige Methoden zur Nutzerauthentifizierung sind:
- Username und Passwort
- Zertifikatsbasierte Anmeldung (X.509)
- Soft-Token
- Smartcard
- Tokencode
- OTP-Token (One-Time-Password)
- SMS
- App-basiert (Smartphone)
- Andere Hardware-Tokens (z.B. Flickering)
- Biometrische Anmeldeverfahren
- Multifaktor-Authentifizierung
Der heute noch häufigste Weg der Nutzerauthentifizierung ist die Verwendung von Username mit Passwort. Den Königsweg stellt die Multifaktor-Authentifizierung da, wobei meist die 2-Faktor-Authentifizierung genutzt wird.
Sichere Programmierung:
Soweit möglich sollten kryptographische Anmeldemethoden verwendet werden. Insbesondere bei Intranetanwendungen kann hier ggf. auf eine vorhandene PKI (Public-Key-Infrastruktur) zurückgegriffen werden. Die Umsetzung eines solchen Anmeldeverfahrens sprengt jedoch den Rahmen dieses Kurses und erfordert tiefgreifende Kenntnisse im Bereich der Kryptographie und der jeweilig vorhandenen Infrastruktur.
Eine einfache Multifaktor-Anmeldung kann unter Zuhilfenahme eines zweiten Anmeldeweges (z.B. Smartphone-App, SMS etc.) realisiert werden. Hierzu ist es allerdings unbedingt erforderlich, dass alle genutzten Faktoren sicher einem bestimmten Nutzer zugeordnet werden und dazu ein entsprechender Anmeldeprozess existiert.
Zu einem sicheren Anmeldeprozess gehört in allen Fällen auch ein Rücksetzungsprozess im Falle des Verlustes einen Tokens oder Faktors.
Bei der Verwendung von Passwörtern gelten folgende Grundregeln:
- Ausreichende Länge basierend auf aktuellen Sicherheitsstandards (mindestens 8 Zeichen) erzwingen
- Möglichst eine Kombination aus Zufallszeichen - ein Mix aus Buchstaben (groß, klein), Zahlen und Sonderzeichen - sicherstellen
- Erzwungene, regelmäßige Passwortwechsel haben sich als kontraproduktiv erwiesen!
- Eine Passwortwechsel-Funktion muss die Eingabe des alten Passworts zusammen mit dem neuen erzwingen
- Passwörter werden nicht im Klartext übertragen
- Passwörter werden niemals per E-Mail o.ä. versendet - möglichst auch keine Initialpasswörter (Ablage in Mailbox)
- Passwörter werden niemals als HTTP-GET-Parameter übertragen (u.a. Logs, Browser-History)
- Passwort-Rücksetzungsmechanismen erfolgen über Einmal-Links mit begrenzter zeitlicher Gültigkeit
- Passwörter werden niemals(!) im Klartext abgelegt. Sollte die Anwendung ein Ablage selbst vornehmen, so müssen Passwörter entweder mit aktuellen Industriestandards verschlüsselt werden (z.B. AES-128 oder vergleichbar) oder gehasht werden (z.B. PBKDF2 mit SHA512 und 100.000+ Iterationen)
- Strings, die Passwörter oder Fragemente enthalten, werden - soweit möglich - unverzüglich überschrieben bzw. invalidiert
-
Zur Erschwerung von Wörterbuch- und sonstigen Brute-Force-Angriffen sollte ein Account nach einer bestimmten Anzahl von Login-Fehlversuchen temporär gesperrt werden (z.B. 5min nach 10 oder 100 Fehlversuchen). Auf diese Weise können derartige Angriffe effektiv erschwert werden.
→ Bei großflächigen Angriffen, die einer bestimmten IP-Adresse zugeordnet werden können, kann alternativ auch diese Adresse (temporär) blockiert werden.
Schlagworte
Authentifizierung, Authentisierung, Autorisierung, Secure Code, OWASP, IT-Security, Sichere Programmierung, Web-/Anwendungssicherheit, IT-Securitymanagement, Security Awareness
Kategorien: IT-Sicherheit Hintergrundartikel Programmieren/Java
Kommentare
Eigenen Kommentar hinzufügen
Teilen / Weiterempfehlen
Wenn Sie diese Seite gut finden, teilen Sie es doch ihren Kontakten mit: