Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass

    billybob

    • Fördermitglied
    • Beiträge: 563
    Hi modifiers und paranoiker :P
    ich habe in meinem shop eine sicherere Kennwortverschlüsselung, basierend auf phpass, eingebaut.
    Diese wird auch unter Wordpress und typo3 benutzt. Sie erschwert das Knacken von Passwörtern.
    Weitere Infos unter: http://www.heise.de/security/artikel/Passwoerter-unknackbar-speichern-1253931.html oder in der c't 13/11
    Phpass kann hier heruntergeladen werden: http://www.openwall.com/phpass/phpass-0.3.tar.gz

    Die Dateien sind aus der modified eCommerce Shopsoftware Version 1.05. Die verwendete phpass-Version ist 0.3

    Installation:
    Die drei im zip enthaltenen Dateien:

    Code: SQL  [Auswählen]
    xtc_validate_password.inc.php *
    xtc_encrypt_password.inc.php *
    PasswordHash.php

    * ggf. vorher sichern

    im shop-root entpacken. Fertig.
    Die Datei README enthält nochmals eine kurze Inst-Anleitung.

    Oder, wer's lieber Manuell mag:

    1. Datei PasswordHash.php in das Unterverzeichnis inc kopieren
    2. Datei xtc_encrypt_password.inc.php editieren.

    suchen:

    Code: PHP  [Auswählen]
      function xtc_encrypt_password($plain) {

    ändern in:

    Code: PHP  [Auswählen]
    require_once DIR_FS_INC.'PasswordHash.php';
      function xtc_encrypt_password($plain) {

    suchen:

    Code: PHP  [Auswählen]
         $password=md5($plain);

        return $password;

    ändern in:

    Code: PHP  [Auswählen]
            $t_hasher = new PasswordHash(8, FALSE);
            $password = $t_hasher->HashPassword($plain);
        //$password=md5($plain);

        return $password;

    3. Datei xtc_validate_password.php editieren

    suchen:

    Code: PHP  [Auswählen]
    function xtc_validate_password($plain, $encrypted) {

    andern in:

    Code: PHP  [Auswählen]
    require_once DIR_FS_INC.'PasswordHash.php';

    function xtc_validate_password($plain, $encrypted) {

    suchen:

    Code: PHP  [Auswählen]
            if ($encrypted!= md5($plain)){
                  return false;
            } else {

    ändern in:

    Code: PHP  [Auswählen]
            if ($encrypted != md5($plain)) {
                    $t_hasher = new PasswordHash(8, FALSE);
                    $check = $t_hasher->CheckPassword($plain, $encrypted);
                    return $check;
            } else {

    Hinweis für Shopversion 1.06:

    Hi Users,
    wenn Ihr Eure Datenbank auf die Version 1.06 aktualisiert, wird leider durch das Update-Script die Länge des Passwort-Feldes auf 50 Zeichen gekürzt.
    Das kann für die, die blowfish auf dem Server nutzen dazu führen, dass die restlichen zehn Zeichen des passworts beim Update einfach ohne Warnung oder Meldung abgeschnitten werden. (Ich liebe MySQL)
    Deshalb bitte unbedingt in Zeile 61 der Datei update_1.0.5.0_to_1.0.6.0.sql den Wert für die
    Spalte customers_password auf mindestens 60
    erhöhen.

    Code: SQL  [Auswählen]
    #DokuMan - 2011-02-02 - added support FOR passwort+salt (SHA1)
    ALTER TABLE customers MODIFY customers_password VARCHAR(60) NOT NULL;
    [...]

    Ich hoffe, ich habe nichts übersehen.
    Anregungen, Änderungen, Kritik ... ihr wisst schon.
    Gruß
    billybob

    [EDIT Tomcraft 21.06.2011: Modul aktualisiert, Danke an billybob.]
    [EDIT Tomcraft 21.08.2014: Hinweis für Shopversion 1.06 ergänzt.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=13464.0

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Danke!

    Wir haben für die neue Version schon eine Verschlüsselung mit SHA-1 + Salt vorgesehen, die wir in r1756 integriert haben.

    Frage: Muss bei deiner Lösung das DB-Feld für das Passwort von "varchar(40)" vergrößert werden?

    hendrik

    • Experte
    • Beiträge: 2.038
    [...]
    Anregungen, Änderungen, Kritik ... ihr wisst schon.
    [...]

    Ist schon 'ne gute Sache.  :thx: Übrigens.

    Genial wäre es, wenn du das noch so gestaltest, daß man existierende Shops, mit altem md5-Hash, damit nachrüsten kann. Wenn sich ein Kunde anmeldet wird geprüft, ob der PW-Hash in der DB noch in der alten md5-Form vorliegt. Wenn PW erfolgreich verifiziert (auf alte Weise) wird das PW auch gleich durch die neue Verschlüsselung geschoben und in neuer Form abgespeichert. So aktualisiert sich das System selbstständig wenn sich Kunden nach und nach einloggen.

    Dann wär's ein perfektes Modul für Shops (existierende oder neu aufgesetzt)* wo man die Passwortsicherheit noch erhöhen will.

    Gruß
    Hen

    *In kommender Version ist, wie DokuMan schon anmerkte, ein verbesserter Hash-Algorithmus.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.213
    • Geschlecht:
    wie schaut es mit vorhandenen Passwörten aus, sind diese noch gültig, werden die nach dem Login erneuert ?

    Gruss Gerhard

    billybob

    • Fördermitglied
    • Beiträge: 563
    [...]
    Frage: Muss bei deiner Lösung das DB-Feld für das Passwort von "varchar(40)" vergrößert werden?

    Hi DokuMan,
    hm, das DB-Feld ist in meiner DB bereits 40 Lang. (Ist zumindest seit der 1.05 so)
    Korrektur: ist schon seit der V1.00 so.
    Die von phpass erzeugten Kennwörter sind konstant 36 Zeichen lang.
    Gruß
    billybob

    billybob

    • Fördermitglied
    • Beiträge: 563
    Hi gerhard, hallo hendrik

    wie schaut es mit vorhandenen Passwörten aus, sind diese noch gültig, werden die nach dem Login erneuert ?
    [...]

    Die vorhandenen sind weiterhin gültig, denn die Abfrage

    Code: PHP  [Auswählen]
    if ($encrypted != md5($plain))
    bleibt ja erhalten.

    Erneuert werden Sie leider nicht, denn beiden Methoden validieren und encrypten ja nur und liefern entweder das verschlüsselte Kennwort oder "true" und "false" zurück.
    Somit ist eine Automatische Änderung mit diesen Methoden nicht möglich. Änderungen am Kennwort werden erst vorgenommen, wenn der Kunde "Kennwort ändern" in seinem Konto wählt.
    Die Einträge in der DB werden an unterschiedlichen Stellen von anderen Funktionen vorgenommen.
    Damit habe ich mich bisher aber nicht beschäftigt. Aber was nicht ist, kann ja noch werden.
    Gruß
    Rolf

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.213
    • Geschlecht:
    Schau dir einfach mal an, wie es im Trunk gelöst wurde.

    Gruss Gerhard

    billybob

    • Fördermitglied
    • Beiträge: 563
    [...]
    Frage: Muss bei deiner Lösung das DB-Feld für das Passwort von "varchar(40)" vergrößert werden?

    Ergänzung:
    Ich habe die Änderung soeben zusätzlich auf einer Installation auf einem WebPackL bei HostEurope übernommen.
    Dort werden die Kennwörter dann 60Zeichen lang, weil dieser Provider wohl standardmäßig Blowfish als Verschlüsselung anbietet.

    Zusätzlich sollten also die Länge der DB-Spalte customers_password auf einen größeren Wert gesetzt werden.
    Empfehle:

    Code: SQL  [Auswählen]
    ALTER TABLE  MODIFY customers_password VARCHAR(60);
     
    denn in der Methode HashPassword($password)
    wird eine maximaler Password Hash von 60 erzeugt und zurückgegeben.

    Sorry for the inconvenience.
    Rolf

    Schau dir einfach mal an, wie es im Trunk gelöst wurde.
    [...]

    Mach ich

    billybob

    • Fördermitglied
    • Beiträge: 563
    Hi modifiers,
    die aktualisierte Version konvertiert die vorhandenen Passwörter beim Login des Benutzers automatisch.
    Einbauanleitung als README im angehängten zip.

    Anregungen, Änderungen, Kritik ... ihr wisst schon.
    Gruß
    billybob

    [EDIT Tomcraft 21.06.2011: Modul in Beitrag 1 aktualisiert.]

    jannemann

    • modified Team
    • Beiträge: 6.289
    • Geschlecht:
    Hallo billybob,

    vielen Dank für's Bereitstellen!

    Schöne Grüße,
    Jan

    inception

    • Neu im Forum
    • Beiträge: 14
    Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
    Antwort #10 am: 28. Juni 2012, 13:01:46
    Hallo billybob,

    ich hoffe es ist kein Problem das ich hier auf den älteren Beitrag antworte, aber für mich ist der gerade aktuell  :-)
    Ich bin gerade dabei von meinem XTC 3.04 sp2.1 auf Modified umzusteigen.
    Das dauert bei mir wegen Anpassungen länger, darum mache ich das parallel zum laufenden Shop.
    Da viele Kunden Guthaben besitzen möchte ich bis der neue Shop läuft dein Modul im XTC 3.04 Shop anwenden.

    Es hat soweit auch alles geklappt.
    Bei neuen Kunden werden die Passwörter besser verschlüsselt und auch bei alten Kunden wird das Passwort nach dem ersten Login im neuen Format verschlüsselt.

    Doch es gibt ein Problem das sich ausschließlich auf Neue Kunden und Kunden deren Passwort neu Verschlüsselt wurde bezieht.
    Wenn ein Kunde, sich einloggen will kommt folgende Fehlermeldung:
    Fatal error: Cannot instantiate non-existent class: passwordhash in /html/inc/xtc_validate_password.inc.php on line 41

    Die Meldung kommt übrigens auch wenn ich beim login ein Passwort falsch eingebe.
    Allerdings auch hier, nur bei Kunden mit stärker verschlüsseltem Passwort.

    Hast Du eine Idee woran das liegen könnte?

    Danke!

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
    Antwort #11 am: 29. Juni 2012, 13:30:17
    Hi inception,
    wahrscheinlich fehlt:

    Code: PHP  [Auswählen]
    // This function validates a plain text password with an
    // encrpyted password
    require_once DIR_FS_INC.'PasswordHash.php';

    Gruß
    billybob

    inception

    • Neu im Forum
    • Beiträge: 14
    Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
    Antwort #12 am: 30. Juni 2012, 21:38:54
    Hallo billybob,

    ja das war es !
    Ich hatte es nach der Anleitung aus der Readme gemacht, da fehlt der Teil.

    Klappt super! Mein Kompliment, klasse Arbeit!

    Leider habe ich noch PHP 5.2 auf dem Server so das der Fallback greift, aber das wird sich in kürze erledigt haben.

    Danke für das tolle Modul!

    Viele Grüße!

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
    Antwort #13 am: 01. Juli 2012, 02:15:45
    Ooops, echt. da muss ich doch gleich mal schauen.
    Schön, dass es funktioniert.

    M.E. hat der fallback nichts mit 5.2 zu tun, sondern mit den installierten Erweiterungen. Meine Installationen laufen alle auf 5.2.x.

    Gruß
    billybob

    inception

    • Neu im Forum
    • Beiträge: 14
    Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
    Antwort #14 am: 01. Juli 2012, 23:39:19
    Hallo billybob,

    es ist Mcrypt installiert, aber das bleibt ja außern vor soweit ich das beurteilen kann.
    Was hast Du denn installiert damit blowfish klappt unter PHP 5.2 ?

    Viele Grüße!
    7 Antworten
    4357 Aufrufe
    14. April 2012, 12:33:50 von nicnero
    7 Antworten
    1430 Aufrufe
    02. Juni 2021, 17:02:05 von hbauer
    1 Antworten
    2370 Aufrufe
    31. August 2012, 18:56:19 von frangulus
    10 Antworten
    6404 Aufrufe
    18. Juni 2014, 09:02:03 von ShopNix
               
    anything