Gleich vorweg:
JS-SHA1-Login ist kein einfaches "sende username + SHA(passwort)"
Es ist ehr eine Challenge Handshake Authentication.
Vereinfachtes Verfahren:
Das Klartextpasswort verläßt nicht den Browser.
Der Hash der zum Server geschickt wird, ist nicht ein einfaches SHA1(password)!
Ein detailierten Ablauf kann man hier Nachlesen: JS-SHA-Login - pseudo code
Das ganze erfordert JavaScript.
Um challenge und salt vom Server zu erhalten nutzten wir AJAX (mit jQuery).
Um den SHA1 Hast zu bilden nutzten wir SHA1 JavaScript implementation von Paul Johnston.
Um es nochmal klarzustellen. JS-SHA1 Login bietet keine echte Sicherheit im vergleich mit https! z.B. Kann der Client nicht überprüfen ob er auch wirklich mit dem Server kommuniziert oder mit einem Man-in-the-middle. JS-SHA1 Login bietet auch keine Sicherheit gegenüber eines Session Hijacking
Allerdings ist das verwendete Verfahren zumindest für das einloggen wesentlich sicherere als das Passwort im Klartext zum Server zu schicken. Außerdem werden auf dem Server keine Klartextpasswörter gespeichert. Mit den Daten, die auf dem Server gespeichert werden, kann jemand alleine nicht's anfangen.
Wenn du auf deinem Server https hat, kann man es problemlos mit dem JS-SHA1 Login kombinieren!
Mehr Information: Warum JS-SHA-Login Sinn macht...
Viele, wenn nicht sogar alle, CMS/Wikis/Foren benutzten einen nicht sicheren Login. Dabei wird der Benutzername und das Passwort im Klartext übers Internet geschickt.
Eine sichere Lösung bietet dabei nur https .
Das Problem: Bei keinem Provider erhält man eine gesicherte HTTPS-Verbindung für wenig Geld. Wir haben uns überlegt, wie man dennoch eine sichere Authentifizierung durchführen kann.
django-processinfo: 6.1 ms of 485.3 ms (1.3%)