Seite 1 von 2

Verschlüsselung umkehren

Verfasst: 10.04.2008 23:53
von PHP ist mein Kreuz
Hallo,

ich befürchte dieses Thema ist hier schon öfters aufgetaucht aber ich konnt in der Suchfunktion nichts finden, dass ich auch verstehen würde.

Ich bin Neuling im Bereich PHP deswegen hoffe ich auf ein wenig Verständnis.

Ich habe eine Seite entwickelt, bei der man über eine Login (nach Registrierung) auf ein Programm zugreifen kann

Jetzt habe ich auch noch zusätzlich ein phpBB3 Forum eingebaut.
Wie ihr jetzt bestimmt richtig vermutet, will ich jetzt natürlich nicht, dass sich die User zweimal registrieren müssen (Mein Programm + Forum) sondern will einen Account für beides nutzen.

Die Regist. beim Programm besteht nur aus einem Username und einem Passwort, dass md5 verschlüsselt wird.

Wie ich jetzt hier lesen konnte ist die Passwort-Verschlüsselung im phpBB3 doch noch ein wenig anders (=>mit "SALT" (wie auch immer das gehen soll)) und ich möchte dass es einfach nur stinknormal md5 verschlüsselt ist.

Ich möchte somit über meine PHP-Registration-Files den Usernamen und das Passwort einmal in meine Account-Tabelle (des Programmes) und einmal in die phpbb_users-Tabelle (vom Forum) eintragen lassen und die Passwörter sollen in beiden Tabellen identisch verschlüsselt sein, so dass beim Login zum Programm und beim Login zum Forum die selben Daten benutzt werden können

Geht das und falls ja, wie schaffe ich das?

Gruss
"PHP ist mein Kreuz"

Verfasst: 11.04.2008 09:14
von davil
Wenn du diese Login-Funktionalität deines Programms selbst gemacht hast, wäre meiner Meinung nach der einzig sinnvolle Weg, dir anzuschauen wie das Passwort-Hashing mit dem Salt bei phpBB 3 genau gemacht wird und dann sowohl Salt als auch md5-Hash zu übernehmen.

Im Falle einer versehentlichen Veröffentlichung der Daten sind ungesalzene md5-Hashes deutlich leichter zu knacken (mit sogenannten Rainbow-Tables wo für viele bekannte Wörter schon die Hashes drinstehen) als gesalzene.

Der Aufwand, das Salting bei dir einzubauen, ist wahrscheinlich der selbe, wie es bei phpBB auszubauen. Von dem Gesichtspunkt her wäre die sicherere Variante auf jeden Fall zu bevorzugen.

davil

Verfasst: 11.04.2008 09:51
von PHP ist mein Kreuz
Ok...
Kann mir jemand irgendwelche hilfreiche Links empfehlen, in denen ich sehe wie ich das machen kann?

Gruss
PHPIMK

Verfasst: 11.04.2008 12:46
von davil
Schauen wie es bei phpBB gelöst ist, kannst du auf jeden Fall in der functions.php, Zeile 285 (function phpbb_hash($password)).

Das ganze ist anfangs sicher nicht so einfach, im Endeffekt wird aber eine leicht modifizierte Version von phpass benutzt.

Verfasst: 11.04.2008 17:00
von PHP ist mein Kreuz
Sag mal,

dieser von mir erwähnte Fall ist doch bestimmt schon öfters aufgetaucht. Gibt es vielleicht schon eine Bibliothek, Plugin, PEAR-Extension etc die genau dieses Problem löst?

Gruss
PHPIMK

Verfasst: 11.04.2008 19:03
von S2B
Mir ist da nichts bekannt, so kompliziert ist das ganze aber auch nicht. Im Prinzip brauchst du solange einen doppelten Datenbestand, bis jeder User sich einmal eingeloggt hat, denn nur dann liegt das Klartext-Passwort vor, aus dem du das gesaltete generieren kannst.

Das gleiche Problem tritt auch beim Update von phpBB2 auf phpBB3 auf, du könntest dir also mal anschauen, wie das da gelöst wurde. :wink:

Problemlösung

Verfasst: 25.04.2008 19:56
von mad_moses
hi,

hab das gleiche problem, kann bitte jemand erläutern wie er das problem gelöst hat. Ich hab versucht die functions.php zu importieren, doch leider brauch die funktion phpbb_hash die funktion unique_id() die ich nicht auffinden kann irgendwie. Wäre super wenn mir da einer weiterhelfen könnte.

gruß moses :lol:

Verfasst: 25.04.2008 21:31
von djchrisnet
die beiden genannten functionen sind in includes/functions.php hinterlegt!

Verfasst: 25.04.2008 21:52
von gn#36
Der Ordner includes/auth/ ist auch nicht ganz uninteressant, da findet sich u.a. die Info drin wie das beim Update funktioniert wenn ich mich nicht sehr irre. Kurz beschrieben läuft das allerdings ziemlich simpel: Es gibt ein Datenbankfeld, in dem gespeichert wurde, ob das Passwort bereits gesalzen ist oder nicht, wenn nicht wird das Passwort nach einem erfolgreichen Login gesalzen und das Feld umgesetzt, wenn nicht dann erfolgt ein ganz normaler Login.

Verfasst: 25.04.2008 23:50
von mad_moses
hmm, dann versteh ich nicht wie das funktionieren soll, ich hab mir das so vorgestellt, dass die Funktion das passwort als string bekommt und mir dann den hash liefert, diesen hash vergleich ich mit der datenbank, wenn der benuter und das passwort übereinstimmen möchte ich den User ins system lassen.

kann das so funktionieren?