Eigene Forenbridge, Passwörter und Cookie

  • Grüß euch.

    Ich arbeite derzeit an einer Bridge zwischen Wordpress und einem etwas unbekannten Forum.
    Die User lassen sich schon mal alle in WP importieren genau so wie umgekehrt. Was mir Probleme bereitet sind die Passwörter. In beidem Systemen werden unterschiedliche Verschlüsselungsmethoden für das Passwort genutzt. Wie kann man damit am besten Umgehen?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • In beidem Systemen werden unterschiedliche Verschlüsselungsmethoden für das Passwort genutzt. Wie kann man damit am besten Umgehen?

    Bridge heißt in dem Fall vermutlich, User können sich in beiden Systemen registrieren und dann mit den selben Zugangsdaten beide Seiten nutzen?

    Von der einen Verschlüsselung in die andere wird nicht gehen. Du kommst ja vom jeweiligen Hashwert nicht mehr auf das Augangspasswort (das ist ja Sinn der Sache).

    Das einzige was mir jetzt einfällt wäre, beide Systeme dahingehend zu erweitern, dass gleich beim Anlegen bzw. der Vergabe der Passwörter beide Hashs generiert und in der Datenbank angelegt werden...

  • Bridge heißt in dem Fall vermutlich, User können sich in beiden Systemen registrieren und dann mit den selben Zugangsdaten beide Seiten nutzen?

    Genau so ist es gedacht.

    Das einzige was mir jetzt einfällt wäre, beide Systeme dahingehend zu erweitern, dass gleich beim Anlegen bzw. der Vergabe der Passwörter beide Hashs generiert und in der Datenbank angelegt werden...

    Dies wurde bereits umgesetzt aber es gilt nur für neue User. Was mache ich mit den bereits vorhandenen?
    Was mir Spontan noch einfällt, nach der Installation der Bridge alle Cookies im Forum und Blog löschen. Sobald der User sich einloggt prüfen ob er bereits im System ist, wenn ja dann lasse ich Ihn im anderen System eintragen.

    Jetzt die Frage ob das eine annehmbare Lösung ist?


  • Dies wurde bereits umgesetzt aber es gilt nur für neue User. Was mache ich mit den bereits vorhandenen?

    Ach so...

    Was die vorhandenen angeht, geht es nur so, dass du die Hashes neu aus den Passwörtern erzeugst. Der Weg von Hash zu Hash klappt wie gesagt nicht.

    Das geht entweder so, wie du jetzt beschrieben hast (du erstellst den zweiten Hash beim anmelden bzw. der Passworteingabe).

    Oder Variante zwei wäre, einfach alle Passwörter zurücksetzen und die Leute auffordern, ein neues Passwort zu erstellen.
    Machen viele Seiten und Dienste ja hin und wieder mal (auch aus Sicherheitsgründen).

  • Ein möglicher Lösungsansatz ist hier beschrieben.

    Man benötigt nur etwas Code aus dem Password-Check des alten Forums.

    Hört sich einfach an. Was ich mich jedoch Frage. Um das Foren Passwort in WP zu übertragen muss es ja entschlüsselt werden.
    Das Forenpasswort nutzt sha1, md5 und Salt als Verschlüsselung.

    Vereinfacht:

    PHP
    $fs = $DB->config('vsalt_mode'); <<<< Wert zufällig wärend der Foreninstallation gewählt Zahlen von 1-9 und a-z, irgendwo zwischen 10 und 20 Zeichen
    $salt_forms['user_password']    = md5('password' . $fs);
    $salt_forms['user_password']    = sha1(md5($salt_forms['user_password']) . $fs);
    // Eintragen in die DB
    $form_inputs[$salt_forms['user_password']] = trim(htmlspecialchars($salt_forms['user_password']));

    Man müsste also aus diesem Teil das Passwort in Klartext bekommen, was unmöglich ist und es dann für WP wieder verschlüsseln oder habe ich da etwas ganz falsch verstanden?

    Einmal editiert, zuletzt von Honulu (19. Januar 2017 um 17:35)

  • Ich glaube b3317133 meint etwas anderes:

    Er würde für beide Systeme (das Forum und Wordpress) den gleichen Hash benutzen und Wordpress entsprechend (durch Anpassung/Änderung der wp check password() ) "beibringen", dass er die Authentifizierung mit der gleichen Methode macht, wie das Forum.

    Dafür bräuchtest du ja das Passwort gar nicht im Klartext, sondern müsstest den Vergleichs-Hash in WordPress nur identisch erzeugen, wie den Vergleichs-Hash im Forum.

    Ich hoffe, ich habe das jetzt richtig verstanden und wiedergegeben...

    Edit: Ziemlich smarte Idee übrigens :)

    Einmal editiert, zuletzt von danielgoehr (19. Januar 2017 um 17:51)

  • In der Datenbank würde bei [FONT=courier new]user_pass[/FONT] entweder der Hash aus dem alten Forum stehen oder ein nomaler von WordPress. Der erweiterte Check probiert dann einfach beide Hash-Algorithmen und vergleicht das Ergebnis jeweils mit dem Wert in der Datenbank.

    Exakt nach diesem Muster macht das WordPress auch mit den (uralten) MD5-Hashes, deren Verwendung für einen manuellen Passwort-Reset in der Datenbank nach wie vor im Codex beschrieben wird:

    Zitat

    Note that even if the passwords are salted, meaning they look like $P$BLDJMdyBwegaCLE0GeDiGtC/mqXLzB0, you can still replace the password with an MD5 hash, and WordPress will let you log in.

    Diese Funktion würde man mit einem dritten Check anhand altem Forum-Code erweitern, dann geht es mit allen drei Varianten.

  • So, nach einigen Tagen klappt es auch mit dem 3 Check um die Passwörter aus dem Forum in Wordpress zu nutzen. Ganz ohne Importieren bzw. Kopieren.

    Was mir jetzt noch Probleme macht, das Forum bietet genau an diesem Punkt keine Schnittstelle um im Forum den pw hash aus Wordpress einzubinden, habe mir sagen lassen zwecks Sicherheit.

    Einzige Lösung wäre das ich, wenn sich ein User in Wordpress Registriert alle Daten direkt auch in die Foren User Tabelle Schreibe.

    Soweit so gut. Mit einer für meine Bedürftnise angepasste Form von diesem Script https://codex.wordpress.org/Customizing_the_Registration_Form lasse ich während der Registration alle Daten in die Foren Tabelle schreiben. Nur das abfangen des WP Passwortes macht Probleme. Während der Registration erstellt er ja automatisch ein Passwort. Das kann ich in meinem Script mit $user_pass abfangen. $user_pass stammt aus der function register_new_user wp-includes/user.php

    Erweitere ich also den INSERT mit der Variable $user_pass, so schreibt er das von Wordpress verschlüsselte Passwort in die Foren Datenbank. Ein Abfangen des Blank Passwort scheint nicht möglich zu sein.

    Was sind eure Vorschläge/Lösungen? Blank Passwort selber Generieren und dieses in die Datenbank von WP und dem Forum einpflegen? Dann ist die Frage wie gehe ich da voran? Reg Link überschreiben so das eine Registration nur über das Forum möglich ist?

  • Man könnte auch noch [FONT=courier new]wp_hash_password()[/FONT] erweitern, dort sollte das "Blank Passwort" irgendwann vorbeikommen, dann könnte man es in eine [FONT=courier new]global[/FONT] Variable zwischenspeichern und im weiteren Verlauf in einem anderen Filter/Action (falls nötig) entspr. verwenden.

  • Ich muss euch mal sagen, diese Community ist genial.
    [COLOR=#333333][FONT=&amp]wp_hash_password() [/FONT][/COLOR]brauchte ich nicht erweitern. Ich konnte im obigen Beispiel das Passwort in Klartext mit $userdata['user_pass'] abgreifen.

    Einmal editiert, zuletzt von Honulu (21. Januar 2017 um 18:43)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!