Wie kann man eine "Remember Me"-Funktionalität sicher erstellen?

25/04/2016 - 01:25 von Michael Vogel | Report spam
Hi!

Ich programmiere an einer Webapplikation, die eine "Remember
Me"-Funktionalitàt hat (gemeint ist damit, dass man sich nicht immer neu
anmelden muss, falls man einen entsprechenden Haken gesetzt hat)

Dies wurde bislang über eine Manipulation des Session-Cookies gelöst,
dies scheint aber unzuverlàssig zu sein.

Ich wollte dies nun darüber lösen, dass ich über "setcookie" ein
entsprechendes Cookie mit làngerer Laufzeit setze und spàter wieder lese.

Nun das Problem: Der Cookie-Wert wird auf dem lokalen Rechner
gespeichert. Wenn ich also z.B. den Usernamen in das Cookie schreiben
würde, könnte ein böswilliger Angreifer den Cookie manipulieren und
somit Zugriff unter jedem beliebigen Usernamen erhalten.

Es gibt "schlüsselfertige" Lösungen wie diese hier:
http://www.bitrepository.com/php-autologin.html

Aber hier wird einfach das Password per MD5 gehasht und in das Cookie
geschrieben. Zum einen sollte man MD5 nicht in sicherheitsrelevanten
Bereichen verwenden, zum anderen erscheint es mir von meinem Bauchgefühl
her nicht sicher, das Passwort in einem Cookie zu speichern.

Andere Lösungen, die ich gefunden habe, speichern beim Anmelden in der
Userdatenbank einen zufàlligen Hashwert, der dann in das Cookie
geschrieben wird und der sich laufend àndert. Aber das erscheint mir
nicht sinnvoll nutzbar, wenn man von mehreren Rechnern aus arbeitet. Und
wenn es immer der gleiche Hashwert wàre, könnte der abgegriffen werden,
um sich dann mit einem anderen Rechner einzuloggen.

Gibt es "schlüsselfertige" Lösungen für PHP, die sicher sind und die es
ermöglichen, dass man die Funktionalitàt auf mehreren Rechnern nutzt?

Michael
 

Lesen sie die antworten

#1 Stefan+Usenet
25/04/2016 - 07:22 | Warnen spam
On Mon, 25 Apr 2016 01:25:22 Michael Vogel wrote:
Andere Lösungen, die ich gefunden habe, speichern beim Anmelden in
der Userdatenbank einen zufàlligen Hashwert, der dann in das
Cookie geschrieben wird und der sich laufend àndert. Aber das
erscheint mir nicht sinnvoll nutzbar, wenn man von mehreren
Rechnern aus arbeitet. Und wenn es immer der gleiche Hashwert
wàre, könnte der abgegriffen werden, um sich dann mit einem
anderen Rechner einzuloggen.



*Wenn* Du von mehreren Rechnern aus ohne explizite Anmeldung
zugreifen können möchtest, dann kannst Du entweder

a) ein gemeinsames Geheimnis auf allen Rechnern speichern und mit
dem Risiko leben, dass dieses Geheimnis trivial kopierbar ist, oder

b) für jeden Rechner ein eigenes Geheimnis erzeugen, was dann in der
Datenbank eine 1:n-Relation erfordert (also im wesentlichen eine
eigene Tabelle hierfür)

Gibt es "schlüsselfertige" Lösungen für PHP, [...]



Ich halte das Problem in der Umsetzung für hinreichend trivial, um
nicht auf schlüsselfertige Lösungen zurückgreifen zu müssen; dafür
hast Du dann die Umsetzung zu 100% in der Hand, was auch kein
Nachteil ist.

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - Liebe, die nimmermehr raucht.
(Sloganizer)

Ähnliche fragen