Oxconfig Tabelle - OXVARVALUE Feld auslesen

Hallo,

Ich frage mich in welchem Format die Daten im Feld OXVARVALUE in der
oxconfig Tabelle gespeichert werden da ich diese gerne auslesen möchte. Gibt es dazu irgendwo Informationen ?

mfg

Gute Frage - ich wollte schon auch immer wissen, warum das nicht einfach serialisiert da steht sondern binär. Sind die Werte wirklich so geheim?

Udo.

www.stretta.de

Es muss ja an irgendeiner Stelle in diese Tabelle geschrieben werden, ich bekomme es zwar hin das Feld auszulesen aber nicht daraus dann wieder ordentliche Daten zu machen. Kann sich einer der tiefer in der Materie steckt eventuell dazu äußern ? Wäre wirklich wichtig da es der letzte Schritt ist um unser neues Modul fertig zu kriegen :wink:

Edit:
Habe jetzt mal ein Ticket beim Support aufgemacht, wenn ich etwas erfahre poste ich es hier

Hi,

ich vermute, dass es sich hier um Rudimente aus der proprietären Ära handelt :slight_smile: Theoretisch sollte unserialize() funktionieren, um einen lesbaren Array herauszubekommen.


Marco Steinhäuser
Community Operator
OXID eSales AG

Habe ich mir auch gedacht, aber irgendwie sieht das für mich nicht nach serialisierten Daten aus (die könnte man ja noch irgendwie lesen) das was ich aus der Tabelle ziehe und anzeige sieht am ende völlig Random mäßig aus - probieren tue ich es trotzdem einmal. Danke für den Tip schonmal.

P.S. Ich versuche aus dieser Tabelle auszulesen welche Module im Shop aktiviert sind (Option aModules) - geht das eventuell auch eleganter (Ich muss von außerhalb ran, also ohne Oxid Klassen)

Also ein unserialize fliegt mir komplett um die Ohren, ich habe mit folgendem Statement einfach mal eine bestimmte Zeile herausgelesen:

SELECT OXVARVALUE FROM oxconfig WHERE OXVARNAME = 'aModules’
Soweit so gut das ist ja nicht so schwierig, nun wenn ich das ganze ausgebe dann sieht das in etwa so aus:

Array
(
[OXVARVALUE] => Mº2,wOTD¥wq%Ö

Haha, ich hab es gefunden. Die Daten in dieser Tabelle werden über die SQL Funktion ENCODE verschlüsselt zusammen mit einem Schlüssel der sich in der Datei oxconfk.php befindet. Also habe ich mir eine Wrapper Klasse geschrieben die die Datei oxconfk.php includiert und kann aus dieser Wrapper Klasse nun den Schlüssel auslesen. Damit kann man dann die Daten aus dieser Tabelle lesen und schreiben. Wer mehr Infos dazu braucht kann sich ja bei mir melden.

Mit den Shopklassen würde es so funktionieren, der Vollständigkeit halber:

oxConfig::getInstance()->getConfigParam( $sVarName );
oxConfig::getInstance()->getShopConfVar( $sVarName, $sShopId = null );

nix geheimes :wink:


Marco Steinhäuser
Community Operator
OXID eSales AG

Dass es so funktioniert, ist klar. Meine Frage zielte eher darauf ab, aus welchem Grund diese Daten binär codiert werden. Ebenso gilt das für die Passwörter, die denselben Schlüssel verwenden (Vermutlich ist der Schlüssel sogar bei allen Shops derselbe, da er bereits im Downloadpaket vorhanden ist und bei der Installation nicht neu generiert wird).

Bei den Passwörtern wäre eine Einweg-Verschlüsselung per md5-Hash eine Lösung mit besserer Sicherheit, bei den Werten aus oxconfig kann man auf die Codierung ganz verzichten und die Daten serialisiert speichern. Ist vielleicht eine Anregung für zukünftige Versionen.

Udo.

www.stretta.de

Also das die Passwörter mit diesem Schlüssel verschlüsselt werden halte ich für keine gute Idee, Ist das nicht Sicherheitskritisch ? Auch MD5 Hashing wäre erst so richtig sicher mit einer art “salted Hash” verfahren - gutes Beispiel wäre wie das bei Joomla gelöst ist. Aber ein normaler MD5 wäre immernoch besser wie ein private Key der keiner mehr ist.

Gute Idee, ein salted Hash, dazu das Passwort nicht nur einmal, sondern z.B. 100 mal durch md5 laufen lassen, und wir sind auf der sicheren Seite. Als “salt” hat man mit der OXID des Users schon einen brauchbaren Wert…

Udo.

www.stretta.de

Daran wird im Moment gearbeitet.

Gruß


Marco Steinhäuser
Community Operator
OXID eSales AG

Dies ist nur zur Referenz und für Leute die drauf stoßen.
Stand Oktober 2013 und Version CE 4.7.8 funktioniert dies.

SELECT OXVARNAME, decode( OXVARVALUE, ‘<wert aus oxconfk.php>’ ) AS gnuelpf
FROM oxconfig
WHERE OXVARNAME LIKE '%module%'
LIMIT 0 , 30

:slight_smile: