Wenn ich ein Login für eine App mit mittlerem bis niedrigem Sicherheitsrisiko erstelle (dh keine Banking-App oder ähnliches), kann ich ein vom Benutzer eingegebenes Passwort bestätigen, indem ich Folgendes sage:
if(enteredPassword == verifiedPassword)
SendToRestrictedArea();
else
DisplayPasswordUnknownMessage();
Es scheint einfach, effektiv zu sein, aber es würde mir sicherlich nichts ausmachen, wenn das alles war, was erforderlich war. Reicht eine einfache Überprüfung der Kombination aus Benutzername und Passwort aus?
Update: Das jeweilige Projekt ist zufällig ein Webdienst, die Überprüfung erfolgt ausschließlich auf Serverseite und ist nicht Open Source. Ändert die Domain, wie Sie damit umgehen würden?
security
passwords
validation
Morgan Herlocker
quelle
quelle
Antworten:
Nicht ohne SSL
Dies ist nicht sicher, wenn das Passwort im Klartext über das Netzwerk gesendet wird. Das Hashing des Kennworts auf der Serverseite ist auch nicht sicher, wenn das Kennwort im Klartext über das Netzwerk gesendet wird.
Da das HTML-
<input type="password"/>
Tag seinen Inhalt im Klartext sendet, ist dies ein Problem, unabhängig davon, wie Sie das Kennwort auf dem Server speichern, es sei denn, Ihre Website verwendet SSL zur Übermittlung des Kennworts.(Die HTTP-Authentifizierung, bei der ein Dialogfeld im Browser angezeigt wird, in dem Sie nach einem Kennwort gefragt werden, kann je nach den vom Server und vom Browser gemeinsam verwendeten Authentifizierungsmechanismen als Klartext angezeigt werden. Auf diese Weise kann dies möglicherweise vermieden werden, ohne die Option zu verwenden SSL.)
Nicht, wenn die Site-Administratoren verdächtig sind
Angenommen, Sie verwenden HTTPS für die Ausführung der Website. Dies kann sicher sein, wenn Sie Ihren Site-Administratoren (die Klartext-Kennwörter lesen können) und anderen Personen, die Zugriff auf den Computer haben, vertrauen, um sich ordnungsgemäß zu verhalten. Nun mag es offensichtlich sein, dass sie mit Ihrer Website alles tun können, was sie wollen (da sie sie verwalten), aber wenn sie das Passwort lesen können, können sie möglicherweise auch die gestohlenen Login / Passwort-Paare auf den Websites anderer Personen verwenden.
Eine Möglichkeit, um Passwörter vor dem Administrator zu schützen
Eine sichere Methode zum Speichern und Überprüfen von Passwörtern ist folgende:
Versuchen Sie, für die Hash-Funktion etwas Starkes und etwas zu verwenden, das noch keine guten Regenbogentabellen in freier Wildbahn hat. Sie können die Länge des Salzes bei Bedarf ändern, indem Sie an Regenbogentischen arbeiten.
Abhängig von der Umgebung, in der Sie sich befinden, der Variabilität Ihrer Netzwerklatenz und der Frage, ob Benutzernamen öffentlich bekannt sein sollen, möchten Sie möglicherweise einen anderen Codepfad berechnen,
hash('0000'+entered_password)
wenn der Benutzer nicht vorhanden ist, um Angreifer daran zu hindern Feststellen, welche Benutzernamen gültig sind, basierend auf der Zeit, die benötigt wird. Feststellen, dass das Kennwort falsch ist.quelle
http://
Verbindung verwenden möchten, ist das frustrierend: /encrypt(entered_password, public_key)
senden, auf dem Client rechnen und dieses Ergebnis an den Server senden, der die Leistung erbringtdoes_password_match?(user, decrypt(encrypted_password, private_key))
?does_password_match(user, salt, decrypt(encrypted, key))
, wobei das Salz vom Benutzer abhängt. Wie gesagt, das offensichtliche Problem ist der Mangel an Man-in-the-Middle-Schutz.Das würde bedeuten, dass Sie Kennwörter in offenem Text halten, was selbst in Szenarien mit geringer Sicherheit ein No-No ist.
Du solltest lieber haben:
Sie können einfachen Hash wie zum Beispiel MD5 verwenden
quelle
Ich stimme mit denen überein, die das Haschisch vorschlagen, aber es gibt auch ein Rad, das Sie hier neu erfinden. Abhängig von der Plattform finden Sie wahrscheinlich ein Rollen- / Benutzerverwaltungs-Tool, das alle Benutzerverwaltungsaufgaben sicher und sicher abdeckt, ohne dass Sie zu viel eingreifen müssen.
quelle
Sicherheit ist ein sehr heikles Thema, insbesondere weil es ein Gleichgewicht zwischen der Beeinträchtigung Ihrer Benutzer und der Gewährleistung der Sicherheit ihrer Informationen geben muss. In der Regel hängt die Formel für die von Ihnen benötigte Sicherheit von der Wichtigkeit der Daten ab. Zusamenfassend:
Ein weit verbreitetes Missverständnis über Menschen, die schlechte Dinge tun, ist das, wonach sie streben. Die meisten von ihnen sind darauf aus, das Vertrauen zu zerstören . Sie sollten immer alles tun, um das Vertrauen Ihrer Benutzer zu schützen. Ein Teil davon ist Ihre Sorgfalt, um sicherzustellen, dass ihre Identität sicher ist. Sie interessieren sich vielleicht weniger für die Daten, die sie speichern, aber für ihre Identität - selbst bei der niedrigsten Sicherheitsschwelle.
Es gibt eine Reihe von kostengünstigen Optionen (für die Implementierung und Auswirkung auf den Benutzer). Eines davon ist das Hashing des Passworts auf ein Minimum. Jeder Dienst, der etwas so Vertrauliches wie ein Passwort im Klartext speichert, verdient die Verlegenheit, gehackt zu werden.
Allgemeine Grundsätze für den Passwortschutz
Da Sie SSL für die Authentifizierung verwenden würden, möchten Sie mindestens alle Seiten verschlüsseln, die sich auch mit dem Konto des Benutzers befassen. Auf diese Weise kann die Identität eines Benutzers so gut wie möglich geschützt werden.
Ein Hinweis zur Passwortverwaltung : Benutzer vergessen von Zeit zu Zeit ihr Passwort. Das absolut Schlimmste, was Sie tun können, ist, ihnen ihr Passwort per E-Mail zu senden. Wenn Sie die oben beschriebenen Prinzipien implementieren, können Sie das sowieso nicht. Es ist viel besser, ein Verfahren zum Zurücksetzen des Kennworts über einen Link bereitzustellen, der an die registrierte E-Mail-Adresse gesendet wird. Dieser Link zum Zurücksetzen verfügt über einen einmaligen Verwendungscode, um sicherzustellen, dass die Person, die auf die Seite zugreift, dieser Code ist.
quelle
Das ist in Ordnung, es sei denn, das Passwort wird für etwas anderes verwendet. Es besteht immer noch das Risiko, dass der Benutzer beschließt, das Kennwort erneut zu verwenden. Daher ist es noch besser, wenn Folgendes zutrifft:
Wenn Sie selbst oder jemandem bewusst ist, dass das Kennwort im Klartext gespeichert ist, ist dies in Ordnung.
quelle
if (hash (enteredPassword + salt) == hashOfValidSaltedPassword)
- und beachten Sie, dass die+
wahrscheinlich Verkettung, nicht hinaus. Dies behindert die Verwendung von Regenbogentabellen, bei denen es sich um Hash-Tabellen mit möglichen Kennwörtern handelt.Ist der Quellcode verfügbar? Auch wenn dies nicht der Fall ist, bin ich mir ziemlich sicher, dass das Passwort in der Maschinenanleitung enthalten ist, falls die Binärdatei verfügbar ist. Ich würde empfehlen, stattdessen eine Prüfsumme zu erstellen und diese zu vergleichen.
Übersehen Sie niemals die Sicherheit, auch wenn sie Ihrer Meinung nach nicht sehr wichtig ist.
quelle
Absolut nicht. Haben Sie einen Lese von dieser , beschreibt es , wie Hacker eine Sicherheits Website gehackt. Sie planen, Sie als das schwächste Glied in der Kette zu haben.
quelle
In einigen Antworten wurde darauf hingewiesen, dass Sie nicht das Kennwort selbst, sondern einen Hash speichern und SSL verwenden sollten.
Sie können sagen, was ist die große Sache? Wenn meine Anwendung gehackt wird, ist das kein Problem. Nun, es ist ein weit verbreitetes Muster, dass Benutzer auf allen Websites dasselbe Kennwort wiederverwenden. Würde ein Hacker Ihre Website hacken und Zugang zu den Passwörtern des Benutzers erhalten, wäre der Hacker in der Lage, viele dieser Benutzer auf anderen Websites auszuweisen, die für diese Benutzer von größerer Bedeutung sind. Das Hacken Ihrer Website könnte für einen Hacker der erste Schritt sein, um den Benutzern Zugang zu Bankinformationen zu verschaffen.
Und nur das Hashing des Passworts ist nicht genug. Sie müssen es mit einem Salz hacken. Hacker haben Reverse-Hash-Nachschlagetabellen, sodass sie für einen bestimmten Hash ein passendes Passwort finden können.
Wenn Sie diese Funktion nicht implementieren, sollten Sie die Benutzer über diese Sicherheitslücke informieren und sie dazu ermutigen, nicht dasselbe Kennwort zu verwenden, das sie an anderer Stelle verwenden.
quelle
Solange dies serverseitig ist .. Dann ja.
Wenn Sie ein bisschen mehr Sicherheit wünschen, wählen Sie https und verschlüsseln \ hash das Kennwort in der Datenbank.
quelle