Neu SQL Abfrage - Kundendaten entschlüsseln cNachname & cStrasse

wunderli

Aktives Mitglied
21. September 2015
11
0
Hallo zusammen

Wir stellen in Kürze von Shopware 5 zu JTL 5.22 um. Für unsere Kunden, bieten wir über das Kundenkonto die Möglichkeit auf ein externes Portal zuzugreifen. Dort können Sie für Ihre Geräte Reparaturen anmelden und dahinter ist ein recht umfangreicher Prozess angehängt inkl. Trello Visualisierung und Rückabfragen per API damit der Kunde proaktiv über den aktuellen Stand informiert wird. Jetzt haben wir das Problem, dass wir auf die Kundendaten via SQL zugreifen. Das klappt auch alles tadellos mit der neuen Datenbankstruktur nur haben wir nun bei den Tabellen cNachname und cStrasse verschlüsselte Werte. Mir ist klar das dies mittels Blowfish verschlüsselt wurde und das dieser Key in der Datei /includes/config.JTL- Shop.ini.php abgelegt ist.

Zuerst war die Idee auf die JTL eigene Funktion in der CryptoService zuzugreifen, dies ist aber aufgrund von Zugriffsbeschränkungen nicht möglich. Daran möchte ich eigentlich auch nichts ändern da ich nur minimal in das Setting des Shops eingreifen möchte.
Nun ist meine Idee die Entschlüsselung direkt nach der Abfrage zu tätigen, hat jemand von euch schon mal eine entsprechende Funktion geschrieben? Mein Hauptproblem ist, dass ich nirgends finde mit welcher Blowfish Methode das ganze ent- und verschlüsselt wird, sonst könnte man sich mal die Dokus ansehen. Alle Einträge hier im Forum beziehen sich mehr oder weniger auf Version vor dem JTL Shop 5.

Gruss wunderli
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.513
1.545
Berlin
Ich verstehe die Frage nicht so ganz, bzw. nicht genau wann Ihr denn auf diese Daten zugreifen möchtet um was damit zu tun.

Ihr könnt auf den Crpytoservice zugreifen
$cryptoService = Shop::Container()->getCryptoService();

und dann eben die Daten entschlüsseln wenn Ihr wollt (es muss einen Grund dafür geben das JTL da nen trim verwendet
\trim($cryptoService->decryptXTEA($username))
 
  • Gefällt mir
Reaktionen: wunderli und bzng

wunderli

Aktives Mitglied
21. September 2015
11
0
Ich verstehe die Frage nicht so ganz, bzw. nicht genau wann Ihr denn auf diese Daten zugreifen möchtet um was damit zu tun.

Ihr könnt auf den Crpytoservice zugreifen
$cryptoService = Shop::Container()->getCryptoService();

und dann eben die Daten entschlüsseln wenn Ihr wollt (es muss einen Grund dafür geben das JTL da nen trim verwendet
\trim($cryptoService->decryptXTEA($username))
Hallo css-umsetzung
Da stehe ich jetzt echt am Berg ich kriege immer errors das ich nicht zugriffsberechtigt sei. Das Problem ich greife von extern also ausserhalb der JTL Umgebung darauf zu.

Vielleicht gehe ich es aber auch falsch an, zuerst muss ich den autoloader von JTL laden (require) und dann kann ich auf die JTL Funktion zugreifen richtig?

Vielen Dank übrigens für die rasche Rückmeldung!

Gruss wunderli
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.513
1.545
Berlin
Ich hab das mal schnell ganz einfach gemacht, nur zur Verdeutlichung

Ich würde das normalerweise über ein Plugin regeln und dann mit dem Hook für IO Requests arbeiten, wie gesagt, ich weiss nicht was du da genau machen möchtest.

Um dir zu verdeutlichen was du nur brauchst, ich hab im Hauptverzeichnis eine Datei angelegt, nennen wir Sie einfach test.php, die beeinflusst ja nicht den core und du musst auch nichts am core ändern, in dieser Datei stehen dir dann alle Funktionen, also auch Datenbankabfragen zur Verfügung.

Code:
<?php declare(strict_types=1); // @deprecated since 5.2.0

use JTL\Shop;


require_once __DIR__ . '/includes/globalinclude.php';

$cryptoService = Shop::Container()->getCryptoService();
echo \trim($cryptoService->decryptXTEA("ZQgV9gAFQwelJW5ShvQ+XcsoHZlOYeYb"));

Mehr brauchst du nicht um die Entschlüsselung zu nutzen, den crypto String den hast du dann ja oder holst ihn dir aus der Datenbank, wie auch immer.

Teste das mal aus, da kommt nen ganz normaler Name bei raus.
 
  • Gefällt mir
Reaktionen: wunderli

wunderli

Aktives Mitglied
21. September 2015
11
0
Ich hab das mal schnell ganz einfach gemacht, nur zur Verdeutlichung

Ich würde das normalerweise über ein Plugin regeln und dann mit dem Hook für IO Requests arbeiten, wie gesagt, ich weiss nicht was du da genau machen möchtest.

Um dir zu verdeutlichen was du nur brauchst, ich hab im Hauptverzeichnis eine Datei angelegt, nennen wir Sie einfach test.php, die beeinflusst ja nicht den core und du musst auch nichts am core ändern, in dieser Datei stehen dir dann alle Funktionen, also auch Datenbankabfragen zur Verfügung.

Code:
<?php declare(strict_types=1); // @deprecated since 5.2.0

use JTL\Shop;


require_once __DIR__ . '/includes/globalinclude.php';

$cryptoService = Shop::Container()->getCryptoService();
echo \trim($cryptoService->decryptXTEA("ZQgV9gAFQwelJW5ShvQ+XcsoHZlOYeYb"));

Mehr brauchst du nicht um die Entschlüsselung zu nutzen, den crypto String den hast du dann ja oder holst ihn dir aus der Datenbank, wie auch immer.

Teste das mal aus, da kommt nen ganz normaler Name bei raus.
Das ist etwas anders als ich das wollte, aber ich habe auch direkt auf die CryptoService zugreifen wollen.


Ich habe jetzt einmal eine Funktion gemacht, da ich vermutlich noch mehr auf die Methode zugreifen muss:
Code:
require_once __DIR__ . '/../shops/ch/includes/globalinclude.php';
function decryptData(string $encryptedData): string {
    $cryptoService = Shop::Container()->getCryptoService();
    return trim($cryptoService->decryptXTEA($encryptedData));
}

Ein Testfile sieht nun folgermassen aus:
Code:
<?php
require_once __DIR__ . '/functions.php';
$encrypted_lastname = "ZSGj4AAB+0JPoNXgSawGa1U2zxddcg5l";
$shipping_lastname = decryptData($encrypted_lastname);
echo $shipping_lastname;
?>

Das funktioniert auch tadellos, nur sobald ich 1:1 diesen code in das bestehende Konstrukt in der genau gleichen Ordnerstruktur einbaue, funktioniert ab Header nichts mehr.

Das Problem konnte ich jetzt eruieren: Unser Server läuft auf gewissen VHosts mit 8.1 für die JTL Shops. Der Shopware Shop der abgelöst werden soll aber noch auf 7.4 rennt, da gibt es Plugins, welche einfach nicht neuer rennen. Hier meine Lösung jetzt:


Das Hauptfile:
Code:
function decryptData($encryptedData) {
  $scriptPath = __DIR__ . "/decryption_service.php";
  $command = "/opt/php-8.1/bin/php " . $scriptPath . " " . escapeshellarg($encryptedData);
  return shell_exec($command);
}
//loop through the sql querry
while ($row = mysqli_fetch_assoc($result)) {
  $shipping_lastname = decryptData($row['cNachname']);
  $shipping_street = decryptData($row['cStrasse']) . ' ' . $row['cHausnummer'];
}

Die externe Funktion:
Code:
<?php
require_once __DIR__ . '/../shops/ch/includes/globalinclude.php';
function decryptData(string $encryptedData): string {
    // Your decryption logic remains the same
    $cryptoService = Shop::Container()->getCryptoService();
    return trim($cryptoService->decryptXTEA($encryptedData));
}
// Check if argument is provided
if (isset($argv[1])) {
    try {
        echo decryptData($argv[1]);
    } catch (Exception $e) {
        // Output the exception message to STDERR
        file_put_contents('php://stderr', $e->getMessage());
        exit(1); // Exit with a general error status code
    }
} else {
    echo "No argument provided.\n";
    exit(1); // Exit because there was nothing to process
}
?>

Ich wäre ohne den digitalen Copilot definitiv nicht da wo ich jetzt bin. Die obere Lösung die isoliert funktioniert, wäre mir also wesentlich lieber, die verstehe ich zumindest. Für die untere Lösung benötige ich dann noch Nachhilfe. Aber es ist schon wieder spät. Danke css-umsetzungen du hast mich auf den richtigen Weg gebracht!
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.513
1.545
Berlin
Ich schrieb ja,
wenn man nicht genau weiß was du da machen möchtest, dann kann man nur sagen wie es normal gehen würde :)
aber wenn es so für dich passt ist ja alles ok
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu SQL-Abfrage bei Kundenanlage JTL-Wawi 1.7 2
Neu CSV-Datei direkt in einer SQL-Abfrage verwenden User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Abfrage in Excel User helfen Usern - Fragen zu JTL-Wawi 12
Neu SQL Abfrage Artikelbezeichnung auf Englisch für Artikeletikett User helfen Usern - Fragen zu JTL-Wawi 4
Neu SQL Abfrage wird mehrfach ausgeführt - Ausgabe in der Übersicht falsch Eigene Übersichten in der JTL-Wawi 8
SQL Abfrage via Ameise: Seriennummer u. weitere Daten JTL-Wawi 1.8 0
Neu SQL Abfrage über ODBC für Bewegunghistorie (WMS) Eigene Übersichten in der JTL-Wawi 4
Komplexe SQL Abfrage zu gelieferten Artikeln mit eigenen Feldern - Hilfe gesucht JTL-Wawi 1.8 1
SQL Abfrage alle Aufträge ohne Lieferschein JTL-Wawi 1.8 2
Gelöst SQL zur Abfrage von tVersand / Sendungsnummern Eigene Übersichten in der JTL-Wawi 4
Neu MS SQL Server 2022 oder MS SQL Server 2022 Express? Installation von JTL-Wawi 0
Neu SQL-Fehler bei Volltextsuche und Sonderzeichen JTL-Shop - Fehler und Bugs 0
Neu einfache SQL Verknüfpung zweier Tabellen, z.B. Artikel mit ArtikelBeschreibung 1.6.46.1 Gelöste Themen in diesem Bereich 13
Neu SQL Ausgabe der Varko-Auswahl eines Artikels, mehrsprachig Tabelle zwei mal auf sich Joinen? User helfen Usern - Fragen zu JTL-Wawi 5
Neu SQL-Erfahrene vor - Nach Datenrettung - fehlende Aufträge lassen sich nicht einfügen - Ideen? User helfen Usern 4
Neu Nach Installation eines neuen SQL Servers klappt die Verbindung vom Benutzer-PC zum Server-PC nicht mehr. Installation von JTL-Wawi 5
Neu Fehler SQL-Schema importieren bei Neuinstallation Installation / Updates von JTL-Shop 5
Neu Update MS SQL 2014 auf MS SQL 2022 User helfen Usern - Fragen zu JTL-Wawi 0
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu MS SQL 14 Express wird langsam voll. Welche Lienzen benötigen wir? Bitte um Hilfe Eigene Übersichten in der JTL-Wawi 27
Upgrade von SQL Server 2014 auf höhere Version JTL-Wawi 1.8 4
1.8.11.0 - Worker SQL lässt System hängen JTL-Wawi 1.8 0
Neu List&Label Merkmale auf Etiketten (SQL) Gelöste Themen in diesem Bereich 3
Neu SQL Server Express 2017 auf 2022 Update Installation von JTL-Wawi 10
Neu Nach SQL Server neuinstallation Benutzer gelöscht? JTL-Wawi - Fehler und Bugs 3
Neu Versandart + Zahlungsart in Rechnungskorrektur (SQL) User helfen Usern - Fragen zu JTL-Wawi 10
1.8.10.0 - SQL-Job Performance-Optimierung JTL-Wawi 1.8 24
Neu SQL 2017 auf 2022 updaten (express) User helfen Usern - Fragen zu JTL-Wawi 1
SQL ifGetPrice liefert nur netto Preise, wie komme ich an Brutto ran? JTL-Wawi 1.7 4
Neu Fragen zur Konfiguration von Datenbankdateien und Transaktionsprotokollen während der SQL Server-Installation User helfen Usern - Fragen zu JTL-Wawi 7
SQL Datenbank Änderung? JTL-Wawi 1.7 12
Neu Suche SQL für Ameisen Export "Aufträge - nicht gelieferte" User helfen Usern - Fragen zu JTL-Wawi 0
Neu Datenbestände per SQL abfregen Schnittstellen Import / Export 8
In Bearbeitung SQL Eigene Übersichten Eigene Übersichten in der JTL-Wawi 5
Kategoriezuordnung per SQL Script ändern JTL-Wawi 1.8 4
Neu SQL DB Speicherplatz vs. Vergangenheitsdaten JTL-Wawi - Fehler und Bugs 26
Worker Status per SQL (1.8, Worker 2.0) JTL-Wawi 1.8 1
Neu Abfrage von Änderungen am Lagerbestand zu einem bestimmten Zeitpunkt in der Vergangenheit JTL Ameise - Eigene Exporte 2
Neu Abfrage der Versandart von der Plattform User helfen Usern - Fragen zu JTL-Wawi 0
Neu gelöst: PHP Abfrage Versandklasse und passendes Bild aussteuern Betrieb / Pflege von JTL-Shop 2
Neu Keine Kundendaten in Shopify Bestellung Shopify-Connector 1
Neu feldlänge bei bei den Kundendaten begrenzen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie Wawi (Kundendaten) zurücksetzen User helfen Usern - Fragen zu JTL-Wawi 10
Neu Nach Import von Kundendaten aus SW5 Umleitung nach Login und weiße Seite JTL-Shop - Fehler und Bugs 5
Neu Im Sofortauftrag Kundendaten anpassen (z.b. Ansprechpartner) JTL-Wawi - Ideen, Lob und Kritik 0
Neu Kundendaten/Telefonnummern automatisch nach gmail exportieren/synchronisieren Schnittstellen Import / Export 6
Neu Übernahme der Kundendaten aus dem alten Shop 4 in Shop 5 Betrieb / Pflege von JTL-Shop 12
Neu Erweiterte Kundendaten - Feldtypen erweitern JTL-Shop - Ideen, Lob und Kritik 1

Ähnliche Themen