Hallo zusammen,
ich muss gestehen, ich bin mittlerweile ein wenig verzweifelt und ich befürchte, dass ich so langsam den Wald vor lauter Bäumen nicht mehr sehe.
Es geht darum, dass ich für einen Kunden ein Typo3 System entwickel, bei welchem die fe_users-Tabelle durch einen CSV Import befüllt wird. Die CSV Datei stammt aus einem Access Export und enthält alle nötigen Informationen. Der Import funktioniert auch wunderbar.
Leider suche ich jetzt seit über eine Woche nach einer Lösung für die beiden folgenden Voraussetzungen:
1. Passwörter dürfen nicht im Klartext in der Datenbank stehen.
2. Im FrontEnd muss alles auch ohne JavaScript funktionieren.
Zu dem zweiten Punkt kann ich sagen, dass ich ruhig JavaScript benutzen kann, nur muss eben jede Funktionalität auch ohne JavaScript laufen. Das heißt, ein Login welcher ohne JavaScript nicht funktioniert, kommt nicht in Frage.
Nun habe ich mir die aktuellen Lösungen angeguckt, die es so gibt. Ich habe die Extension "kb_md5fepw" gefunden, womit man die Passwörter schon einmal als MD5 in der DB hätte und auch ein Login funktionieren sollte. Leider wurde die Extension schon seit vier Jahren nicht mehr gepflegt, was diese Extension eher uninteressant für mich macht.
Auf der Suche nach einer Alternative habe ich auch die Info gefunden, dass die Funktionalität von "kb_md5fepw" als SysExt in Typo3 eingebunden wurde (http://bugs.typo3.org/view.php?id=7241). In den verlinkten Einträgen unter "Additional Information" habe ich auch Infos gefunden, wie man das aktivieren soll, was leider nicht funktioniert. Vergleiche ich den diff mit meinem Typo3 System (Version 4.3.3), stelle ich auch fest, dass die Änderung im Code nicht (mehr?) zu finden ist. Für den FE Login mit reinem MD5 zu arbeiten scheint also nicht so ohne weiteres möglich.
Dann habe ich mir nochmal ein paar Dokus und den Code in t3lib/class.t3lib_userauth.php mal angeguckt und wie das mit dem "challenged" und "suberchallenged" abläuft. Als Ergebnis habe ich mal so grob zwei Varianten dabei endeckt:
1. Passwörter werden gehasht in der DB abgelegt und der Login erfordert JavaScript, damit das Passwort schon im Browser gehasht wird.
2. Passwörter stehen weiterhin als Klartext in der DB und ein Login funktioniert auch ohne JavaScript
Ich weiß nicht, ob diese Erkenntnis richtig oder ob ich da irgendwas übersehen habe. Allerdings stellt das so keine Option für mich dar.
Die Extension "rsaauth" ist auch keine Alternative, da auch dort erst was im Browser berechnet wird.
Jetzt meine Frage 🙂
Habe ich irgendwas übersehen?
Mir ist bewusst, dass MD5 heutzutage alles andere als sicher ist. Rainbow Tables gibt es genug im Internet zu finden und auch sich welche selbst zu generieren ist kein Teufelswerk und mit den immer schneller werdenden Rechnern auch immer schneller zu realisieren. Dennoch besteht die Anforderung, dass die Passwörter nicht im Klartext in der DB stehen dürfen.
Und auch die zwei Anforderung, dass alles auch ohne JavaScript oder anderen browserbasierten Scriptsprachen funktionieren muss ist unausweichlich. Dabei ist mir auch bewusst, dass die Passwörter dann im Klartext übermittelt werden. Da wird wenigstens mit SSL verschlüsselt.
Was kann ich machen, damit sich Benutzer im FE ohne JavaScript einloggen können und die Passwörter nicht im Klartext in der DB stehen?
Wie gesagt, ich suche seit über eine Woche nach einer Lösung, habe aber irgendwie noch nichts brauchbares gefunden. Für jeden Tipp bin ich dankbar .. es muss auch keine fertige Lösung sein. Ansätze, wo ich weiter suchen kann helfen mir auch schon 🙂
Vielen Dank schon einmal 🙂