Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development
Code

Sichere Handhabung der Anmeldeinformationen des Benutzers

by
Difficulty:BeginnerLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Bei den meisten Websites befinden sich verschiedene Bereiche (Startseite, Benutzerprofil, Administrationsseite usw.), von denen einige öffentlich sind und andere nur auf bestimmte Benutzer beschränkt werden müssen. Sie möchten Benutzer häufig eindeutig identifizieren, um benutzerdefinierte Inhalte bereitzustellen oder bestimmte Informationen von einem Benutzer zu erfassen. Viele Websites müssen auch einen Teil der Website schützen, z. B. einen Verwaltungsbereich, um den Inhalt der Website zu verwalten und zu aktualisieren. Auf einer CMS-Site können einige Benutzer möglicherweise Inhalte erstellen, andere müssen diese Inhalte jedoch genehmigen, bevor sie der Öffentlichkeit angezeigt werden.

Sichern des Benutzernamens und des Passworts

Unabhängig von Bedarf, Einschränkung oder Anpassung muss jeder Benutzer identifiziert werden, der auf Ihre Website zugreift. Bei einer Internet-Site, die für allgemeine Benutzer gedacht ist, haben Benutzername und Passwort immer noch Vorrang, da es keine bessere Option gibt. Es gibt andere Optionen, wenn Sie in speziellen Umgebungen arbeiten, z. B. in einem Unternehmens-Intranet, in dem Sie die Kontrolle über die Website-Besucher haben.

Anmeldungen und Kennwörter werden häufig so gehandhabt, dass die Website und ihre Benutzer unnötig anfälliger für Sicherheitsangriffe sind. Wenn Sie einige bewährte Methoden befolgen, können Sie Ihre Website und deren Inhalte besser vor Hackern schützen. Die Folgen eines schlechten Schutzes können schwerwiegend sein. Stellen Sie sich eine Website vor, auf der jeder Benutzer Inhalte veröffentlichen kann, die aufgrund einer schlechten Kennwortverwaltung aus dem Unternehmen stammen, oder einen Online-Shop, in dem jeder Benutzer alle auf der Website aufgegebenen Bestellungen anzeigen kann.

Schauen wir uns einige Sicherheitsaspekte an, während Sie mit Anmeldungen und Kennwörtern auf Ihren Websites arbeiten.

Benutzernamen: E-Mails oder generisch

Das Login besteht aus einem Benutzernamen, der Sie identifiziert, und einem Passwort, das bestätigt, dass Sie der Benutzer sind, für den Sie sich ausgeben. Auf Websites kann der Benutzer häufig entweder einen benutzerdefinierten Benutzernamen angeben oder die E-Mail-Adresse des Benutzers als Benutzernamen verwenden.

Vorteile

E-Mails ändern sich nicht oft und die meisten Websites sammeln diese Informationen bereits, sodass der Benutzer seine E-Mail mit geringerer Wahrscheinlichkeit vergisst als einen von ihm erstellten Benutzernamen. Die E-Mail wird auch automatisch eindeutig, da Benutzer selten ein E-Mail-Konto freigeben und diejenigen, die dies tun, wahrscheinlich keine separaten Konten wünschen.

Nachteile

Zu den Nachteilen einer E-Mail gehört, dass zwei Personen, die eine E-Mail teilen, keine separaten Konten haben können. Wenn Ihre Website einen legitimen Grund dafür hat, dass eine Person mehrere Konten hat, ist dies möglicherweise nicht mit E-Mails möglich, aber mit Benutzernamen einfacher zu implementieren. Es ist auch wahrscheinlich, dass eine E-Mail einfacher zu hacken ist, da ein Benutzer wahrscheinlich an jeder Site dieselbe E-Mail verwendet, aber die Mehrheit der Benutzernamen wird wahrscheinlich nicht viel schwieriger zu hacken sein, da Benutzer dazu neigen, Benutzernamen genauso oft wiederzuverwenden, wie sie Passwörter wiederverwenden.

Wenn Sie keinen bestimmten Grund haben, eine E-Mail-Adresse zu vermeiden, bevorzugen Sie die E-Mail als Login-Benutzernamen. Die Verwendung der E-Mail ist auch auf Websites zur Norm geworden. Vergessen Sie jedoch nicht, ein E-Mail-basiertes Login bereitzustellen, mit dem Sie die E-Mail ändern können. Ohne diese Funktion müsste ein Benutzer ein neues Konto erstellen und den gesamten Verlauf der Vergangenheit verlieren, nur weil er den Internetanbieter gewechselt oder ein vorheriges Konto aufgrund eines Abschlusses oder eines Jobwechsels verloren hat, wodurch seine alte E-Mail-Adresse verloren geht.

Seien Sie immer vorsichtig, wenn Sie E-Mails als Login verwenden, um sie nicht öffentlich anzuzeigen, sowohl aus Datenschutzgründen als auch aus Gründen der Spam-Prävention.

Anmeldungen können zu viele Informationen liefern

Die Anmeldeseite Ihrer Website ist der erste Forschungspunkt für einen Hacker. Der Hacker versucht, gültige Konten zu ermitteln, die auf einer Website vorhanden sind. Die richtige Handhabung der Anmeldeseite erschwert die Arbeit des Hackers. Zu Beginn sollten Sie die Datenmenge minimieren, die eine fehlgeschlagene Anmeldung einem Angreifer zur Verfügung stellt. Ihr erster Gedanke, wenn jemand einen Benutzernamen eingibt, der nicht erkannt wird, könnte darin bestehen, eine hilfreiche Nachricht zu senden, dass er seinen Benutzernamen überprüfen sollte. Sie können eine sicherere Seite bereitstellen, indem Sie dieselbe Fehlermeldung anzeigen, wenn der Benutzername nicht gefunden wird und das Kennwort nicht mit dem Kennwort für den angegebenen Benutzer übereinstimmt. Die Nachricht sollte darauf hinweisen, dass die Kombination aus Benutzername und Passwort nicht korrekt war, damit der Benutzer beide Informationen überprüfen kann, nicht nur die eine oder andere.

Wenn Ihre Site E-Mails für den Anmeldenamen verwendet, kann ein Angreifer leicht überprüfen, ob ein Benutzer ein Konto in Ihrem Dienst hat, wenn Sie eine andere Nachricht für eine unbekannte Anmeldung zurückgeben als für eine Kombination aus fehlgeschlagenem Benutzernamen und Kennwort. Es macht die Dinge für den Benutzer etwas weniger bequem, aber die zusätzliche Sicherheit ist normalerweise der bessere Kompromiss.

Wie bereits erwähnt, bedeutet das Entfernen der spezifischen Nachricht für einen ungültigen Benutzernamen eine erhöhte Sicherheit für eine schlechtere Benutzererfahrung. Wenn Sie eine Nachricht bereitstellen, dass kein Login vorhanden ist, kann der Benutzer Tippfehler wie das Eingeben von john anstelle von jon leichter erkennen. Diese Nachricht hilft auch einem Benutzer, der sich nicht daran erinnert, welchen Benutzernamen er auf Ihrer Website verwendet hat. Denken Sie daran, dass diese Art von Nachrichten Hackern eine einfache Möglichkeit bietet, zu überprüfen, ob ein Benutzer auf Ihrer Website vorhanden ist.

Sie können auch helfen, einen Hacker zu vereiteln, indem Sie mehrere Anmeldeversuche besser handhaben. Das versehentliche mehrmalige falsche Eingeben eines Benutzernamens oder Kennworts erfolgt häufig durch ein falsch eingegebenes Zeichen, das Transponieren von zwei Zeichen oder die Verwendung des Kennworts für eine andere Site anstelle des richtigen Kennworts. Das Zulassen unbegrenzter Anmeldeversuche öffnet die Tür zu einem Brute-Force-Angriff, bei dem Benutzernamen und Kennwörter wiederholt versucht werden, um die richtige Anmeldung zu ermitteln. Automatisierte Werkzeugs und Skripte beschleunigen den Prozess, sodass ein Hacker viele potenzielle Kennwörter methodisch verarbeiten kann, bis er das richtige Login gefunden hat.

Die Einführung einer zunehmenden Verzögerungszeit nach jedem fehlgeschlagenen Anmeldeversuch hilft auch, Hacker zu vereiteln. Der erste Anmeldeversuch erfolgt normal. Die zweite Anmeldung wird um einen Bruchteil einer Sekunde verzögert, bevor das Ergebnis zurückgegeben wird. Weitere Versuche werden immer länger verzögert, bevor eine Antwort zurückgegeben wird. Diese Verzögerung ermöglicht eine minimale Unterbrechung für einen legitimen Benutzer, der einen Fehler gemacht hat, verlangsamt jedoch den Hacker, der versucht, die Site brutal zu erzwingen.

Bei sensibleren Daten kann ein stärkerer Ansatz gewählt werden, indem das Konto nach mehreren fehlgeschlagenen Versuchen gesperrt wird. Durch das Sperren des Kontos wird es entweder vorübergehend oder dauerhaft deaktiviert. Die Sperre stoppt Brute-Force-Angriffe, da nach einem bestimmten Zeitpunkt die Anmeldung nicht mehr funktioniert. Eine vorübergehende Deaktivierung sollte nur minimale Auswirkungen auf den Benutzer haben, solange eine Meldung zum Grund für die Sperrung angezeigt wird. Bei einer permanenten Sperre muss sich der Benutzer an den Support wenden, um das Problem zu beheben, und die Anmeldungen werden besser angepasst, um wichtige Daten zu schützen.

Passwörter sichern

Passwörter sind der sensibelste Aspekt der Anmeldung. Speichern Sie Passwörter niemals im Klartext. Noch nie. Je. Dies bedeutet, dass fast jedes Sicherheitsproblem Anmeldeinformationen offenlegen kann. Selbst verschlüsselte Passwörter sollten vermieden werden, da der Entschlüsselungsprozess viel einfacher sein kann, wenn der Hacker Zugriff auf die verschlüsselten Daten erhält. Jeder Speicher, in dem Sie ein Kennwort abrufen können, erleichtert es einem Hacker, dasselbe zu tun.

Salzen und Hashing

Passwörter sollten gesalzen und gehasht gespeichert werden. Ein Salt ist ein zufällig generierter, eindeutiger Wert, der für jedes Login gespeichert und vor dem Hashing hinzugefügt wird. Das Hinzufügen des Salt verhindert, dass identische Kennwörter denselben Hash haben, und verhindert, dass ein Hacker im Voraus eine Liste der Hash-Ergebnisse möglicher Kennwortkombinationen erstellt. Durch Hinzufügen des zufälligen Hashs führt ein Passwort von abc123 (bitte verwenden Sie niemals so etwas als tatsächliches Passwort) zu einem anderen Hash für jeden Benutzer.

Eine Hash-Funktion wandelt das Passwort in einen Wert fester Länge um. Es gibt Funktionen, die speziell für Passwörter wie PBKDF2 oder Bcrypt entwickelt wurden. Die GPU-Prozessoren in modernen Grafikkarten können die für das Hash erforderlichen Berechnungen durchführen und viele schwache Algorithmen schnell brechen. Spezielle Maschinen zum Brechen von Passwörtern können in weniger als sechs Stunden ein beliebiges achtstelliges Passwort oder weniger ermitteln.

Benutzer verwenden häufig das gleiche Kennwort für die meisten Websites, auf denen sie Konten haben. Viele Websites haben damit begonnen, die offengelegten Anmeldeinformationen von Anmelde-Hacks für wichtige Konten anhand ihrer eigenen Anmeldungen zu testen und Benutzer zu kontaktieren, deren Kombinationen aus Benutzername und Kennwort übereinstimmen. Evernote und Facebook haben kürzlich die von Adobe veröffentlichten Anmeldeinformationen geprüft und Benutzer mit denselben Anmeldeinformationen benachrichtigt.

Der einfachste Weg, um mit Passwörtern richtig umzugehen, ist die Verwendung der in Ihrem Webframework enthaltenen Werkzeugs. Die Passwortsicherheit ist kompliziert und wenn nur eines falsch ist, können die Passwörter Ihres Benutzers angegriffen werden. pH pass bietet eine Public Domain-Bibliothek für PHP mit Bcrypt. Die älteren integrierten .NET-Mitgliedschaftsanbieter verwendeten schwächere Hashes, die neuen Universal Providers verwenden jedoch PBKDF2. Rails bietet auch ein Bcrypt-Juwel.

Passwörter zurücksetzen

Wenn Sie Kennwörter ordnungsgemäß sichern, damit sie nicht abgerufen werden können, verlieren Sie die Möglichkeit, dem Benutzer ein vergessenes Kennwort bereitzustellen. Anschließend müssen Sie einem Benutzer, der sein Kennwort zu Recht vergessen hat, eine alternative Möglichkeit bieten, das Kennwort auf sichere Weise zurückzusetzen.

Die Seite zum Zurücksetzen des Passworts

Auf einer guten Seite zum Zurücksetzen des Passworts kann der Benutzer das Passwort ändern, ohne das aktuelle Passwort zu kennen. Bei der herkömmlichen Methode kann der Benutzer seine E-Mail-Adresse eingeben und anschließend einen Link zu einer Webseite senden, über die er das Kennwort zurücksetzen kann. Das Senden eines Links ist sicherer als das Senden eines Kennworts, da das neue Kennwort erst erstellt wird, wenn der Benutzer auf die Seite zugreift. Durch das Senden eines neuen Passworts per E-Mail wird ein neuer Berechtigungsnachweis erstellt, den jeder, der die E-Mail abfängt, ohne Wissen des Benutzers verwenden kann. Wenn jemand die E-Mail abfängt und das Kennwort zurücksetzt, weiß der Benutzer, wann er auf sein Kennwort zugreift und versucht, es zurückzusetzen.

Eine gute Rücksetzseite sollte auch keine Bestätigung dafür liefern, dass ein Konto vorhanden ist. Die Logik ist dieselbe, die wir besprochen haben, um kein Feedback zu geben, wenn beim Anmelden kein Konto vorhanden war. Auch wenn die Anmeldung im System nicht vorhanden ist. Der beste Ansatz besteht darin, eine Nachricht zu senden, dass Anweisungen an die hinterlegte E-Mail-Adresse gesendet wurden. Sie sollten weiterhin eine E-Mail an die eingegebene E-Mail senden, da dies ein berechtigter Fall sein kann, wenn Sie vergessen haben, welche E-Mail für ein Konto verwendet wurde, z. B. die Eingabe einer geschäftlichen E-Mail anstelle einer persönlichen E-Mail.

Links zum Zurücksetzen des Passworts

Der Link zum Zurücksetzen von Passwörtern sollte so gestaltet sein, dass die Rücksetzanforderung eine begrenzte Lebensdauer hat und nur einmal verwendet werden kann. Erstellen Sie für jede Rücksetzanforderung ein eindeutiges Token, das an das angeforderte Konto gebunden ist, und speichern Sie es in einer Datenbank. Dieses Token wird Teil der URL, die per E-Mail gesendet wird, um das Kennwort zurückzusetzen. Dem Token sollte auch eine Ablaufzeit zugewiesen und nach Abschluss des Zurücksetzens entfernt werden. Wenn jemand versucht, ein Token zu verwenden, das bereits verwendet wurde oder abgelaufen ist, schlägt die Anforderung fehl. Die Ablaufzeit muss lang genug sein, damit die E-Mail empfangen und der Benutzer die Aktion ausführen kann, jedoch nicht so lange, bis eine zu lange Verwendung möglich ist. In der Regel reicht ein Zeitrahmen von einigen Stunden aus.

Zurücksetzen eines Passworts per E-Mail

Durch das Zurücksetzen eines Kennworts per E-Mail hängt die Sicherheit Ihrer Website auch von der Integrität der E-Mail-Adresse des Benutzers ab. Wenn auf die E-Mail zugegriffen werden kann, kann diese Person das Passwort zurücksetzen. Websites können Sicherheitsfragen hinzufügen, die vor dem Zurücksetzen des Kennworts beantwortet werden müssen. Sicherheitsfragen bieten wenig zusätzliche Sicherheit, wenn die Antworten leicht zu finden sind. Eine Sicherheitsfrage von "Was ist meine Heimatstadt?" bietet wenig Sicherheit, wenn die Antwort auf dem Facebook-Profil der Person gefunden werden kann. Weitere Informationen zum Entwickeln guter Fragen finden Sie unter http://goodsecurityquestions.com/.

Zwei-Schritt-Authentifizierung

Für ein Login und Passwort ist nur ein Informationspaar erforderlich, um auf eine Website zugreifen zu können. Wenn diese Informationen bereitgestellt werden, wird angenommen, dass der Benutzer die richtige Person ist. Um das Stehlen von Anmeldeinformationen weniger effektiv zu machen, können Sie dem Authentifizierungsprozess einen zweiten Schritt hinzufügen. Zusätzlich zu etwas, das der Benutzer kennt (Benutzername und Passwort), muss der Benutzer auch etwas verwenden, das er derzeit in seinem Besitz hat, üblicherweise ein Mobiltelefon per SMS oder eine Anwendung für diesen Zweck.

Banken waren wahrscheinlich die ersten, die diesen Prozess mithilfe von benutzerdefinierter Hardware implementierten, um einen zeitabhängigen Code zu generieren. Google hat die Verwendung von SMS-Textnachrichten oder einer App als zweiten Schritt populär gemacht. Viele Websites verwenden jetzt ein Login, das mit der Implementierung von RFC 6238 durch Google kompatibel ist. Sie finden Bibliotheken, die diese Technik bereits für die gängigsten Frameworks wie ASP.NET, ASP.NET #2, Ruby on Rails, PHP und Django implementieren.

Externe Authentifizierung

Um diese Probleme zu vermeiden, haben Sie eine andere Option. Lassen Sie dies von einer anderen Person erledigen, indem Sie sich zur Authentifizierung in einen Drittanbieter wie Twitter, Facebook oder OpenID integrieren. Dies bietet Vor- und Nachteile. Die meisten Sicherheitsbedenken, die wir hier besprochen haben, werden beseitigt, da sich jemand anderes mit diesen Problemen befasst. Diese anderen Websites sind jedoch wahrscheinlich auch ein größeres Hackerziel als Sie. Wenn Sie eine andere Site für die Authentifizierung verwenden und diese Anmeldung gefährdet ist, haben die Hacker Zugriff auf Ihre Site.

Die Verwendung eines bekannten Dritten kann sowohl aus Reputations- als auch aus sozialer Sicht helfen und schaden. Der Vorteil der Anmeldung mit Facebook oder Twitter besteht darin, dass dort bereits so viele Benutzer Konten haben, dass sie diese gerne nutzen würden. Andere Besucher betrachten die Integration mit diesen Websites möglicherweise als negative Funktion und verwenden Ihre Website aufgrund dessen nicht oder wenn dies die einzige Option ist, die ihnen zur Verfügung gestellt wird.

Abschluss

Die Anmeldung Ihrer Webanwendung spielt eine wichtige Rolle bei der Sicherung Ihrer Website. Wenn Sie darauf achten, Ihr Login zu schützen, wird dies viel zum Schutz Ihrer Website, der Benutzer Ihrer Website und ihrer privaten Informationen beitragen. Um sicher mit Anmeldungen zu arbeiten, minimieren Sie die Datenmenge, die Ihre Anmelde- und Kennwortrücksetzseiten möglicherweise einem Hacker zur Verfügung stellen könnten. Treffen Sie außerdem Sicherheitsmaßnahmen, um es schwieriger zu machen, die Passwörter Ihres Benutzers mit brutaler Gewalt zu erraten.

Der Schutz von Passwörtern ist ein wichtiges Anliegen jeder Website. Schlecht geschützte Passwörter erleichtern die Arbeit des Hackers und können dazu führen, dass die Anmeldeinformationen Ihrer Website der Öffentlichkeit zugänglich gemacht werden. Die Verwendung von gehashten und gesalzenen Passwörtern erschwert die Arbeit des Hackers erheblich. Darüber hinaus kann das Hinzufügen der Option eines zweiten Schritts zum Anmeldevorgang den Benutzern Ihrer Site mehr Schutz bieten. Sie können auch einen Drittanbieter für die Bearbeitung der Anmeldungen auf Ihrer Website verwenden.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.