Bei den meisten Websites gibt es verschiedene Bereiche (Homepage, Benutzerprofil, Verwaltungsseite usw.), von denen einige öffentlich sind und andere auf bestimmte Benutzer beschränkt sein müssen. Sie möchten häufig Benutzer eindeutig identifizieren, um angepassten Inhalt bereitzustellen oder bestimmte Informationen von einem Benutzer zu erfassen. Viele Websites müssen auch einen Teil der Website schützen, z. B. einen administrativen Bereich, 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 diesen jedoch genehmigen, bevor sie der Öffentlichkeit angezeigt werden.
Unabhängig von der Notwendigkeit, Einschränkung oder Anpassung muss jeder Benutzer identifiziert werden, der auf Ihre Site zugreift. Bei einer Website, die mit dem Internet verbunden ist und für allgemeine Benutzer gedacht ist, haben der Benutzername und das Kennwort 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 Site-Besucher kontrollieren können.
Logins und Passwörter werden zwar häufig benötigt, werden jedoch so gehandhabt, dass Website und Benutzer unnötig anfälliger für Sicherheitsangriffe sind. Durch Befolgung einiger bewährter Methoden können Sie Ihre Website und deren Inhalt besser vor Hackern schützen. Die Folgen eines mangelhaften Schutzes können schwerwiegend sein. Stellen Sie sich eine Website vor, auf der jeder Benutzer Inhalte posten könnte, die aufgrund schlechter Passwortverwaltung aus dem Unternehmen stammten, oder einen Online-Shop, auf dem alle Benutzer alle auf der Website erteilten Bestellungen einsehen können.
Lassen Sie uns einige Sicherheitsaspekte betrachten, während Sie auf Ihren Websites mit Anmeldungen und Kennwörtern arbeiten.
Das Login besteht aus einem Benutzernamen, der Sie identifiziert, und einem Passwort, mit dem Sie als Benutzer bestätigt werden, für den Sie sich als Benutzer ausgeben. Auf Websites kann der Benutzer häufig einen benutzerdefinierten Benutzernamen angeben oder die E-Mail-Adresse des Benutzers als Benutzernamen verwenden.
E-Mails ändern sich nicht oft, und die meisten Websites sammeln diese Informationen bereits. Daher vergisst der Benutzer auch seltener seine E-Mails als einen von ihnen erstellten Benutzernamen. Die E-Mail wird auch automatisch eindeutig sein, da Benutzer selten ein E-Mail-Konto gemeinsam nutzen und diejenigen, die dies tun, wahrscheinlich keine separaten Konten wünschen.
Die Nachteile einer E-Mail sind, dass zwei Personen, die eine E-Mail teilen, keine separaten Konten haben können. Wenn Ihre Website einen legitimen Grund für das Vorhandensein mehrerer Konten für eine Person hat, ist dies möglicherweise nicht mit E-Mails möglich, jedoch mit Benutzernamen leichter zu implementieren. Es ist auch wahrscheinlich, dass eine E-Mail leichter zu hacken ist, da ein Benutzer wahrscheinlich an jedem Standort dieselbe E-Mail verwendet. Die Mehrheit der Benutzernamen wird jedoch wahrscheinlich nicht viel schwieriger zu hacken sein, da Benutzer dazu neigen, Benutzernamen genauso wie die Passwörter wiederzuverwenden.
Sofern Sie keinen bestimmten Grund haben, eine E-Mail-Adresse zu vermeiden, ziehen Sie die E-Mail-Adresse für den Login-Benutzernamen vor. Die Verwendung der E-Mail ist auch auf Websites zur Norm geworden. Vergessen Sie jedoch nicht, ein E-Mail-basiertes Login bereitzustellen, um die E-Mail zu ändern. Ohne diese Funktion muss ein Benutzer ein neues Konto erstellen und den gesamten bisherigen Verlauf verlieren, nur weil er den Internetanbieter gewechselt hat oder ein früheres Konto aufgrund eines Abschlusses oder eines Jobwechsels verloren ging, wodurch die alte E-Mail-Adresse verschwindet.
Seien Sie immer vorsichtig, wenn Sie E-Mail als Login verwenden, um sie nicht öffentlich anzuzeigen, sowohl aus Gründen des Datenschutzes als auch von Spam-Problemen.
Die Anmeldeseite Ihrer Website ist der erste Untersuchungspunkt für einen Hacker. Der Hacker versucht, gültige Konten zu ermitteln, die auf einer Website vorhanden sind. Durch die korrekte Handhabung der Anmeldeseite wird die Arbeit des Hackers schwieriger. Um zu beginnen, sollten Sie die Datenmenge minimieren, die eine fehlgeschlagene Anmeldung einem Angreifer bereitstellt. Wenn Sie einen Benutzernamen eingeben, der nicht erkannt wird, besteht der erste Gedanke darin, dass Sie eine hilfreiche Nachricht anzeigen, dass er den Benutzernamen überprüfen soll. Sie können eine sicherere Seite bereitstellen, indem Sie dieselbe Fehlermeldung anzeigen, wenn der Benutzername nicht gefunden wird und wenn das Passwort nicht mit dem Passwort des angegebenen Benutzers übereinstimmt. Die Nachricht sollte anzeigen, dass die Kombination aus Benutzername und Kennwort nicht korrekt war, damit der Benutzer wissen kann, dass er beide Informationen überprüft, nicht nur die eine oder die andere.
Wenn Ihre Site E-Mails für den Login-Benutzernamen verwendet, kann ein Angreifer leicht überprüfen, ob ein Benutzer ein Konto bei Ihrem Dienst hat, wenn Sie eine andere Nachricht für ein unbekanntes Login zurückgeben als eine Kombination aus einem fehlgeschlagenen Benutzernamen und einem Kennwort. Dies macht den Benutzer zwar etwas weniger bequem, aber die zusätzliche Sicherheit ist normalerweise die bessere Lösung.
Wie bereits erwähnt, werden die spezifischen Nachrichten für einen ungültigen Benutzernamen weggenommen und die Sicherheit für ein schlechteres Benutzererlebnis erhöht. Wenn eine Meldung angezeigt wird, dass kein Login vorhanden ist, kann der Benutzer Tippfehler wie das Eingeben von Texten feststellen John
anstatt jon
einfacher. Diese Nachricht hilft auch einem Benutzer, der sich nicht an den Benutzernamen erinnert, den er auf Ihrer Site verwendet hat. Denken Sie daran, dass diese Art von Nachrichten Hackern eine einfache und 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 ausführen. Wenn Sie versehentlich einen Benutzernamen oder ein Kennwort mehr als einmal falsch eingeben, kommt es häufig vor, dass ein Zeichen falsch ist, zwei Zeichen umgesetzt werden oder das Kennwort für eine andere Site anstelle des richtigen Kennworts verwendet wird. Wenn Sie unbegrenzte Anmeldeversuche zulassen, wird die Tür zu einem Brute-Force-Angriff geöffnet, bei dem Sie wiederholt Benutzernamen und Kennwörter verwenden, um die korrekte Anmeldung zu ermitteln. Automatisierte Tools und Skripte beschleunigen den Prozess, sodass ein Hacker viele potenzielle Passwörter methodisch durcharbeiten kann, bis er das richtige Login findet.
Das Einführen einer längeren Verzögerungszeit nach jedem fehlgeschlagenen Anmeldeversuch hilft auch, Hacker abzuwehren. Der erste Anmeldeversuch geschieht normal. Die zweite Anmeldung wird um den 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 verfolgt werden, indem das Konto nach einer Reihe von fehlgeschlagenen Versuchen gesperrt wird. Durch das Sperren des Kontos wird es vorübergehend oder dauerhaft deaktiviert. Die Aussperrung stoppt Brute-Force-Angriffe, da die Anmeldung nach einem bestimmten Punkt nicht mehr funktioniert. Eine temporäre Deaktivierung sollte minimale Auswirkungen auf den Benutzer haben, solange eine Meldung für den Grund der Sperrung angezeigt wird. Bei einer permanenten Sperre muss der Benutzer sich an den Support wenden, um das Problem zu beheben, und Logins passen besser zum Schutz wichtiger Daten.
Kennwörter sind der sensibelste Aspekt der Anmeldung. Speichern Sie Kennwörter niemals in Klartext. Noch nie. Je. Dies bedeutet, dass bei fast jedem Sicherheitsproblem Anmeldeinformationen angezeigt werden können. Sogar verschlüsselte Passwörter sollten vermieden werden, da der Hacker den Zugriff auf die verschlüsselten Daten erlangt, wodurch der Entschlüsselungsvorgang erheblich vereinfacht werden kann. Jeder Speicher, bei dem Sie ein Kennwort abrufen können, erleichtert es einem Hacker, dasselbe zu tun.
Passwörter sollten gesalzen und gehasht aufbewahrt werden. Ein Salt ist ein zufällig generierter, eindeutiger Wert, der für jedes Login gespeichert und vor dem Hashing hinzugefügt wird. Durch das Hinzufügen des Salt wird verhindert, dass identische Kennwörter denselben Hash verwenden, und verhindert, dass ein Hacker im Voraus eine Liste der Hash-Ergebnisse möglicher Kennwortkombinationen erstellt. Durch Hinzufügen des zufälligen Hashes ein Passwort von abc123
(Bitte verwenden Sie niemals ein solches Passwort als tatsächliches Passwort). Dies führt zu einem anderen Hash für jeden Benutzer.
Eine Hash-Funktion wandelt das Passwort in einen festen Längenwert um. Es gibt Funktionen, die speziell für Kennwörter wie PBKDF2 oder Bcrypt entwickelt wurden. Die GPU-Prozessoren in modernen Grafikkarten können die zum Hashing und Can erforderlichen Berechnungen durchführen brechen viele schwache Algorithmen schnell. Für dedizierte Maschinen zum Brechen von Passwörtern kann ein Kennwort mit acht Zeichen oder weniger in weniger als sechs Stunden festgelegt werden.
Benutzer verwenden häufig das gleiche Kennwort für die meisten Websites, auf denen sie Konten haben. Viele Websites haben mit dem Testen der freigegebenen Anmeldeinformationen von Login-Hacks für Hauptkonten mit ihren eigenen Anmeldungen begonnen und mit Benutzern Kontakt aufgenommen, deren Kombinationen aus Benutzername und Kennwort übereinstimmen. Evernote und Facebook haben kürzlich die von Adobe freigegebenen Anmeldeinformationen geprüft und Benutzer mit denselben Anmeldeinformationen gewarnt.
Der einfachste Weg, Passwörter korrekt zu handhaben, ist die Verwendung der Tools Ihres Web-Frameworks. Die Sicherheit von Kennwörtern ist kompliziert. Wenn Sie nur eines falsch machen, können die Kennwörter Ihres Benutzers angegriffen werden. pH pass stellt eine Public Domain-Bibliothek für PHP zur Verfügung, die Bcrypt verwendet. Die älteren integrierten .NET-Mitgliedschaftsanbieter verwendeten schwächere Hashes, während die neuen Universalanbieter PBKDF2 verwenden. Rails bietet auch ein Bcrypt-Juwel.
Wenn Sie Kennwörter ordnungsgemäß sichern, sodass sie nicht abgerufen werden können, können Sie dem Benutzer nicht mehr ein vergessenes Kennwort geben. Anschließend müssen Sie einem Benutzer, der sein Passwort legitim vergessen hat, eine alternative Möglichkeit zur Verfügung stellen, um das Passwort auf sichere Weise zurückzusetzen.
Auf einer guten Seite zum Zurücksetzen des Kennworts kann der Benutzer das Kennwort ändern, ohne das aktuelle Kennwort zu kennen. Bei der herkömmlichen Methode kann der Benutzer seine E-Mail-Adresse eingeben und sendet dann einen Link an eine Webseite, ü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. Wenn Sie ein neues Kennwort per E-Mail senden, 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 ihn zugreift, und versucht, sein Kennwort zurückzusetzen.
Eine gute Reset-Seite sollte auch keine Bestätigung dafür liefern, dass ein Konto existiert. Die Logik ist die gleiche, die wir im Hinblick auf das Fehlen einer Rückmeldung angegeben haben, wenn beim Anmelden kein Konto vorhanden ist. Auch wenn das Login nicht im System vorhanden ist. Der beste Ansatz ist, eine Nachricht mitzuteilen, dass Anweisungen an die E-Mail-Adresse gesendet wurden. Sie sollten dennoch eine E-Mail an die eingegebene E-Mail senden, da es legitimerweise der Fall sein könnte, 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.
Der Link zum Zurücksetzen der Kennwörter 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 per E-Mail versendeten URL, um das Kennwort zurückzusetzen. Dem Token sollte auch eine Ablaufzeit zugewiesen werden und nach dem Zurücksetzen entfernt werden. Wenn jemand versucht, ein bereits verwendetes oder abgelaufenes Token zu verwenden, schlägt die Anforderung fehl. Die Ablaufzeit muss so lang sein, dass die E-Mail empfangen werden kann und der Benutzer die Aktion abschließen kann, jedoch nicht so lange, dass die Verwendung in der Zukunft zu weit geht. Ein Zeitrahmen von einigen Stunden reicht normalerweise aus.
Durch das Zurücksetzen eines Kennworts über E-Mail ist auch die Sicherheit Ihrer Website von der Integrität der E-Mail des Benutzers abhängig. Wenn auf die E-Mail zugegriffen werden kann, kann diese Person das Kennwort zurücksetzen. Sites können Sicherheitsfragen hinzufügen, die beantwortet werden müssen, bevor das Kennwort zurückgesetzt wird. Sicherheitsfragen bieten wenig zusätzliche Sicherheit, wenn die Antworten leicht zu finden sind. Eine Sicherheitsfrage "Was ist meine Heimatstadt?" bietet wenig Sicherheit, wenn die Antwort auf dem Facebook-Profil der Person zu finden ist. Weitere Informationen zum Entwickeln guter Fragen finden Sie unter http://goodsecurityquestions.com/..
Ein Login und ein Passwort erfordern nur ein Paar von Informationen, um auf eine Website zuzugreifen. Wenn diese Informationen bereitgestellt werden, wird davon ausgegangen, dass der Benutzer die richtige Person ist. Um zu verhindern, dass Anmeldeinformationen gestohlen werden, können Sie dem Authentifizierungsprozess einen zweiten Schritt hinzufügen. Neben etwas, das der Benutzer kennt (Benutzername und Passwort), muss der Benutzer auch etwas verwenden, das er in seinem aktuellen Besitz hat, üblicherweise ein Mobiltelefon über SMS oder eine Anwendung für diesen Zweck.
Banken waren wahrscheinlich die ersten, die diesen Prozess mit benutzerdefinierter Hardware implementierten, um einen zeitabhängigen Code zu generieren. Google machte die Verwendung von SMS-Textnachrichten oder einer App als zweiten Schritt populärer. Viele Websites verwenden jetzt ein Login, das mit Googles Implementierung von RFC 6238 kompatibel ist. Bibliotheken, die diese Technik bereits implementieren, finden Sie für die meisten gängigen Frameworks wie ASP.NET, ASP.NET # 2, Ruby on Rails, PHP und Django.
Um diese Probleme zu vermeiden, haben Sie eine andere Möglichkeit: Lassen Sie dies von jemand anderem erledigen, indem Sie ihn zur Authentifizierung mit einem Dritten wie Twitter, Facebook oder OpenID integrieren. Dies bietet Vor- und Nachteile. Es beseitigt jedoch die meisten Sicherheitsbedenken, die wir hier besprechen, da sich ein anderer 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, haben die Hacker Zugriff auf Ihre Site, wenn diese Anmeldung gefährdet ist.
Die Verwendung eines bekannten Drittanbieters kann sowohl aus Reputation als auch aus sozialer Sicht helfen und verletzen. Der Vorteil des Zulassens von Login bei Facebook oder Twitter besteht darin, dass so viele Benutzer bereits über Konten verfügen, die sie gerne nutzen würden. Andere Besucher können die Integration mit diesen Websites als negativ betrachten und Ihre Website daher nicht verwenden oder wenn dies die einzige Option ist, die ihnen zur Verfügung gestellt wird.
Das Login Ihrer Webanwendung spielt eine wichtige Rolle bei der Absicherung Ihrer Site. Wenn Sie Ihr Login schützen, wird Ihre Website, die Benutzer Ihrer Website und deren private Informationen erheblich geschützt. Um sicher mit Anmeldungen zu arbeiten, minimieren Sie die Datenmenge, die Ihre Anmelde- und Kennwortrücksetzungsseite möglicherweise für einen Hacker bereitstellt. Treffen Sie außerdem Sicherheitsmaßnahmen, um das Erraten der Kennwörter Ihres Benutzers durch Brute Force zu erschweren.
Der Schutz von Kennwörtern ist ein kritisches Anliegen jeder Site. 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 gesalzten Passwörtern macht die Arbeit des Hackers schwieriger. Wenn Sie dem Anmeldeprozess die Option eines zweiten Schritts hinzufügen, können Sie den Benutzern Ihrer Website mehr Schutz bieten. Sie können auch wählen, ob Sie einen Drittanbieter für Anmeldungen zu Ihrer Site verwenden möchten.