Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:

Autor Thema: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass  (Gelesen 12263 mal)

Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
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

600x250

Offline DokuMan

  • modified Team
  • *****
  • Beiträge: 6.653
  • Geschlecht: Männlich
    • Teile Beitrag
    • https://www.creopard.de
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #1 am: 09. Juni 2011, 14:22:47 »
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?


Offline hendrik

  • Experte
  • *****
  • Beiträge: 2.038
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #2 am: 09. Juni 2011, 14:43:09 »
[...]
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.


Offline GTB

  • modified Team
  • *****
  • Gravatar
  • Beiträge: 5.331
  • Geschlecht: Männlich
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #3 am: 09. Juni 2011, 14:44:43 »
wie schaut es mit vorhandenen Passwörten aus, sind diese noch gültig, werden die nach dem Login erneuert ?

Gruss Gerhard


Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #4 am: 09. Juni 2011, 14:47:01 »
[...]
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


Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #5 am: 09. Juni 2011, 15:29:49 »
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


Offline GTB

  • modified Team
  • *****
  • Gravatar
  • Beiträge: 5.331
  • Geschlecht: Männlich
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #6 am: 09. Juni 2011, 15:39:23 »
Schau dir einfach mal an, wie es im Trunk gelöst wurde.

Gruss Gerhard


Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #7 am: 09. Juni 2011, 16:26:31 »
[...]
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


Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #8 am: 21. Juni 2011, 19:11:47 »
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.]


Offline jannemann

  • modified Team
  • *****
  • Beiträge: 6.290
  • Geschlecht: Männlich
    • Teile Beitrag
Re: BETA MODUL: Passwörter sicherer Verschlüsseln mit PHPass
« Antwort #9 am: 21. Juni 2011, 19:22:21 »
Hallo billybob,

vielen Dank für's Bereitstellen!

Schöne Grüße,
Jan


Offline inception

  • Neu im Forum
  • *
  • Beiträge: 14
    • Teile Beitrag
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!


Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
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

Offline inception

  • Neu im Forum
  • *
  • Beiträge: 14
    • Teile Beitrag
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!

Offline billybob

  • Fördermitglied
  • *****
  • Beiträge: 563
    • Teile Beitrag
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

Offline inception

  • Neu im Forum
  • *
  • Beiträge: 14
    • Teile Beitrag
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!

Händlerbund_728x90_animiert

Teile per facebook Teile per linkedin Teile per twitter

 


             
anything