Branche: Nahrungsergänzungen.
Realisiert mit Python.
Aufgabe dieses Projekts war eine grosse Menge an Kundendaten von xtCommerce in PrestaShop zu importieren. Das Besondere daran: Nach Möglichkeit sollen sich die Kunden mit ihrem alten Passwort anmelden können: Eine Aufgabenstellung, bei der die meisten Import-Dienstleister passen müssen. Mit einem technischen Trick ist es möglich zumindest die Passwörter der aktivsten Kunden-Accounts zu PrestaShop mitzunehmen.
PrestaShop und xtCommerce Veyton: Passwortsicherheit
PrestaShop und xtCommerce sind in Sachen Passwortsicherheit technisch auf einem hohen Stand:
Beide Systeme speichern Passwörter verschlüsselt als sogenannte Hash-Werte. Kommt ein Hacker in den Besitz eines Hash-Wertes, so kann er daraus nicht mehr das Passwort im Klartext berechnen. Er erhält aus dem gleichen Hashcode viele mögliche Passwörter. Die Ergebnisse sind nicht eindeutig:
Der umgekehrte Fall funktioniert jedoch: Gibt ein Benutzer sein Passwort in Klartext bei der Anmeldung ein, so ist der daraus berechnete Hash-Wert eindeutig und kann mit dem in der Datenbank gespeichertem Hash verglichen werden. Stimmen beide überein, hat sich der Benutzer erfolgreich authentifiziert.
Da PrestaShop und xtCommerce solche Hash-Werte auf unterschiedliche Weise erzeugen, bringt es leider nichts, die verschlüsselten Passwörter von xtCommerce nach PrestaShop zu übernehmen.
PrestaShop: Übernahme der Kundenpasswörter aus xtCommerce ohne Sicherheitsverlust
Ein Ansatz um das o.g. Problem zu lösen, war die Passwortverschlüsselung von PrestaShop an die von xtCommerce anzupassen. Ein Punkt sprach jedoch eindeutig dagegen:
Vergleicht man die Verschlüsselungsmethoden von xtCommerce und PrestaShop, so bietet PrestaShop ein Plus an Sicherheit:
Anstatt “einfache” Hash-Codes zu erzeugen, verwendet PrestaShop sogenannte Salted HashCodes. Bei diesem Verfahren wird an das Klartext-Passwort ein relativ langer Zufallscode angehängt und danach erst ein Hash-Code erzeugt.
Um die erhöhte Sicherheit von PrestaShop zu bewahren, musste daher eine andere Lösung her:
Der Authentifizierungsvorgang von xtCommerce wurde so modifiziert, dass bei jeder Passwortänderung neben dem Hashcode ein SSL-verschlüsseltes Passwort in einer separaten Tabelle gespeichert wurde. Der per SSL erzeugte Code hat ebenfalls einen hohen Sicherheitsstandard: Es ist nicht möglich das original Passwort ohne den privaten Schlüssel (der nicht auf dem Server gespeichert wird) wieder herzustellen.
Auf diese Weise wurden dann über einen längeren Zeitraum die SSL-Codes der Passwörter gesammelt.
Der Import von Kunden-Accounts von xtCommerce Veyton nach PrestaShop
Beim Import der Kundendaten muss dann nur noch pro Datensatz in der SSL-Code Tabelle nachgeschaut werden. Ist dort ein Wert hinterlegt, wird das Klartext-Passwort mit dem Private Key entschlüsselt und daraus ein Salted Hashcode für PrestaShop erzeugt. Gibt es keinen SSL-Code, wird ein Zufallspasswort erzeugt. In dem Fall muss sich der Kunde bei Anmeldung im PrestaShop ein neues Passwort vom Shopsystem zusenden lassen.
Des weiteren sind beim Import der Kundendaten von xtCommerce nach PrestaShop noch folgende Besonderheiten zu beachten:
- Die Master-Accountdaten von xtCommerce bestehen nur aus einer Emailadresse:
Vorname und Nachname des Kunden müssen aus der ersten Postadresse, die dem Account zugeordnet ist, importiert werden. - Es kann Accounts geben, denen keine Postadressen zugeordnet sind:
Das geschieht dann, wenn sich ein Neukunde in xtCommerce anmeldet und den Vorgang abbricht. - Es kann Accounts mit leeren Passörtern geben. Diese entstehen durch Gastbestellungen in xtCommerce.
- Es können in xtCommerce mehrere Accounts unter der gleichen Emailadresse existieren, nämlich dann wenn ein Kunden einen regulären Account hat und danach eine Gastbestellung durchführt (oder im umgekehrten Fall).
Beachtet man all diese Sonderfälle, wird man mit einem sauberen Import in PrestaShop belohnt und die aktivsten Kunden freuen sich, wenn sie sich mit ihrem alten Passwort im neuen Shop anmelden können.