Philipp Hasenfratz: Sicheres Login

Beitrag lesen

Halihallo Thomas

wie realisiere ich einen sicheren Passwortschutz? Bzw. welcher ist der sicherste?

Digest-Authentication über SSL dürfte ganz akzeptabel sein. Nicht
nur, dass das Passwort nicht plain-text übertragen wird, sondern als
MD5-Digest, sondern auch noch über eine sichere, verschlüsselte
128-bit Verbindung fliesst und somit sehr sicher ist.

Zum einen benutze ich .htaccess. Das soll ja aber auch nicht das sicherste sein. Gibt es dafür bereits einen Nachfolger, vielleicht mir einer höheren Verschlüsselung?

Verwende die Digest-Authentication. Bei Basic wird das Passwort
in plain text übertragen. _Beides_ kann ein potenzieller Hacker
natürlich verwenden, nur, dass er bei Digest-Authentication das
Passwort nicht kennt, sondern nur den "Digest" davon und somit
"weniger" Information hat. Hätte er das plaintext Passwort könnte
er dieses ja auch bei anderen Logins (uns sei es nur ein Mailkonto
bei GMX, z.B.) versuchen (es sei denn, diese verwenden auch MD5).

Merke: Authentication hat nichts mit Verschlüsselung zu tun!
Verschlüsselung wird z.B. über SSL ermöglicht, das, was du da mit
deiner .htaccess machst ist lediglich ein Passwortschutz, keine
Verschlüsselung. Ohne Verschlüsselung braucht ein Hacker "nur" den
Datenstom zwischen Client und Server abzuhören und kann (egal ob
Digest/MD5 oder plaintext) auf den Service zugreifen. Bei SSL wird
die Kommunikation zwischen Client und Server verschlüsselt und dann
hat der Hacker (sorry, Cracker) kein leichtes Spiel mehr.

Was mir an dieser Variante noch nicht gefällt, ist das losgelöste Fenster und wenn man keine Zugangsdaten hat, kommt die keine-zugangsberechtigung-seite.

live with it.

Zum anderen habe ich einen Login in php realisiert. Die Logindaten sind in meiner Datenbank gespeichert. Der Status, ob man sich korrekt eingelogt hat, wird mit der Methode POST immer weiter gegeben (zur Steigerung der Sicherheit habe ich unsinnige Werte versendet, die man nicht errät). Das Weitergeben ist aber relativ umständlich, deshalb gefällt mir diese Lösung nicht. Wo liegen bei dieser Variante die größten Risiken?

Entweder du gibst diese Daten immer weiter, oder du sorgst dafür,
dass dir der Client diese Arbeit abnimmt (Stichwort: Cookies). Dies
zum Thema "Umständlichkeit des Weitergebens".

Wichtige Frage: Wie wird in den folgenden Prozessen die
Authentizität des Users festgestellt? - Beschreibe mal genau, was
nach dem Login passiert und wie ein Folgeaufruf einer geschützten
Seite die Korrektheit des Logins überprüft wird. Wie meinst du das
genau mit den "unsinnigen Werten", wie verwendest du diese bzw. was
noch wichtiger ist: benutzt du diese um die Authentizität des
Besuchers festzustellen?

Risiken an deiner Lösung kann man erst abschätzen, wenn man den
Code dazu einsehen kann, jedwelche Aussage ohne Code hat keinen
Nutzen.

Was gibt es für Alternativen? (Vielleicht CGI?)

CGI ist eine Schnittstelle zwischen Webserver und CGI-Programm und
hat damit absolut nichts, nada, niente, rien zu tun.

Zu welcher Variante ratet Ihr mir?

s. ganz oben.

Viele Grüsse

Philipp

--
The only program that runs perfectly every time, is a virus.