Ich habe heute eine Frage von meinem Vorgesetzten erhalten, in der ich gefragt werde, was als akzeptables Design für die Authentifizierung einer Webformularanwendung angesehen wird, insbesondere in Bezug auf die Art vieler gängiger Browser, Kennwort für Ihre typischen Benutzername-Kennwort-Anmeldefelder zu speichern .
Mir fällt es schwer, eine Antwort zu finden, die ich für akzeptabel halte. Angesichts der peinlichen Sicherheitslücken von Sony möchte ich wirklich vorsichtig sein, auch wenn die Daten, die auf Personen gespeichert werden, eine geringere Empfindlichkeit aufweisen. Wir speichern keine Sozialversicherungsnummern oder Adressen, jedoch Telefonnummern, E-Mail-Adressen und ein Foto eines Besuchers.
Er befürchtet, dass sich ein Benutzer das Passwort einfach an einem öffentlichen Terminal merken und dann einfach auf dieses Terminal springen kann, um unbefugt Daten anzuzeigen oder zu ändern. Ich bin mir jedoch ziemlich sicher, dass zumindest auf Windows-Arbeitsstationen der Browser das Kennwort nicht für alle Windows-Benutzerkonten "merkt".
Darüber hinaus implementiere ich eine Einwegkennwortverschlüsselung auf der Serverseite (verschlüsseltes Kennwort in der Datenbank speichern, vom Benutzer eingegebenes Kennwort auf dem Server verschlüsseln, mit verschlüsselter Zeichenfolge aus der Datenbank vergleichen). Es gibt keine unmittelbaren Pläne, eine SSL-Verschlüsselung einzubauen, dies ist jedoch immer noch eine Option.
Gibt es bei diesem Ansatz größere Sicherheitslücken? Haben Sie bessere Vorschläge?
quelle
Antworten:
Einige gute Tipps:
Mein Vorschlag an Sie wäre, ein Buch über das Sichern von Webanwendungen zu erhalten. Es gibt einfach zu viele Informationen, um sie in einer einzigen Antwort / einem einzigen Blog / Artikel wiederzugeben. Das Thema Verschlüsselung allein ist umfangreich.
quelle
Sie können versuchen, das Browserverhalten außer Kraft zu setzen - hier einige gute Tipps:
/programming/32369/disable-browser-save-password-functionality
quelle
Ich würde sagen, es sollte dir gut gehen.
Die meisten Benutzer werden intelligent genug sein, um ihr Kennwort nicht auf einem öffentlichen Terminal zu speichern, und die Kennwörter werden pro Profil gespeichert. Denken Sie daran, sie könnten es genauso einfach auf einen Notizzettel schreiben oder ein schwaches Passwort verwenden.
Wenn die Anmeldeseite nicht über SSL verschlüsselt ist, ist es für einen Angreifer nicht zu schwierig, dieses Kennwort zu ermitteln, während es über das Netzwerk übertragen wird. Ein guter Job hat jedoch das Kennwort in der Datenbank gespeichert, wodurch ein potenzieller Angreifer daran gehindert wird, die Kennwörter aller zu sehen (die er mit der E-Mail-Adresse verwenden könnte, um sich bei anderen Websites anzumelden, auf denen sich der Benutzer möglicherweise befindet).
Wenn Sie es dennoch möchten, gibt es Möglichkeiten, das Verhalten des Browsers zu deaktivieren, wie Chad hervorgehoben hat. Ich habe das nur auf der Website meiner Bank und im Microsoft Live-System gesehen.
quelle
Ab einem bestimmten Punkt können Sie einen Benutzer nicht vor sich selbst schützen (und sind gesetzlich nicht dazu verpflichtet). Die Funktion "Kennwort speichern" ist zwar riskant, aber ein Risiko, das der Benutzer eingeht. Wenn der Benutzer beschließt, sein Kennwort für mehrere Dienste erneut zu verwenden, übernimmt er dieses Risiko ebenfalls. Sie müssen sie auch nicht warnen, ihr Kennwort nicht auf einen Notizzettel zu schreiben und an ihren Monitor zu kleben, auch wenn Benutzer dies häufig tun.
Das heißt, bis jemand erfolgreich Rechtsstreitigkeiten führt und die Regeln ändert. Siehe auch: "Warnung: Inhalte können heiß sein".
quelle
Ich glaube nicht, dass Sie zuverlässig kontrollieren können, ob sich der Browser ein Passwort merkt oder nicht. Es liegt einfach in Ihrer Hand, ob der Browser dies tut oder nicht. Es ist auch nicht unbedingt ein großes Sicherheitsrisiko für Sie . Sie sollten immer davon ausgehen, dass Angriffe von gültigen Anmeldungen ausgehen können. Gehen Sie nicht davon aus, dass jemand, der einen gültigen Login-Benutzer / -Pass hat, nichts Gutes tut. Es gibt viele Möglichkeiten, wie Passwörter in die falschen Hände geraten können.
Sie könnten die Feldnamen in Ihrem Anmeldeformular jedes Mal nach dem Zufallsprinzip sortieren.
<input name="username"
Verwenden Sie stattdessen so etwas wie<input name="user658667587"
. Das würde zwischengespeicherte Benutzernamen ziemlich unbrauchbar machen. Aber ich weiß nicht, ob sich der Aufwand lohnen würde. Ganz zu schweigen von unangenehmen Benutzern, die sich nicht auf öffentlichen Maschinen aufhalten .Wenn Sie sich in einer äußerst sicherheitsrelevanten Situation befinden (Bankgeschäfte, Investitionen), können Sie während der Anmeldung einfach die Leute fragen, ob es sich um eine öffentliche Maschine handelt. Sie können bekannte IP-Adressen auch zwischenspeichern, wenn sich Benutzer anmelden. Wenn Sie sich von einem anderen Ort aus anmelden, benötigen Sie zusätzlich zum normalen Benutzer / Ausweis eine nicht tippbare PIN-Nummer (z. B. Bilder anklicken). Meine Bank macht so etwas.
quelle