Sven Rautenberg: unserialize->Problem

Beitrag lesen

Moin!

$neuesarray=unserialize($benutzer->session)
Leider bleibt mein $neuesarray leer.

Du solltest aber Warnungen bekommen, sofern du dein PHP nicht geknebelt hast.

s:40:"Testhotel -- "NUR TEST-- NICHT BUCHEN"";

Z.B. die Notation dieses Strings ist fehlerhaft, weil die Anfuehrungszeichen innerhalb des Strings nicht ordnungsgemaesz maskiert sind.

Deutet auf fehlendes Escaping beim Schreibvorgang in die DB hin - irgendwo sind die escapenden Backslashes verloren gegangen.

Und wenn das Escaping bei solchen internen Vorgängen schon fehlt, wird es bei allen anderen Einfügungen von User-Daten in Querys wohl ebenfalls fehlen! Die Applikation ist also hochgradig durch SQL-Injections angreifbar.

Überdies vermute ich aufgrund des Transfers der Sessionspeicherung weg vom PHP-Standard hin zur SQL-Speicherung, dass auch keinerlei Locking der Sessiondaten vorgenommen wurde. Es kann also außerdem noch zu unschönen Race-Conditions kommen.

Bobby, warum willst du den PHP-Standardmechanismus nicht beibehalten? Wenn du alles selbst machen willst, handelst du dir mehr Probleme ein, als du wissen kannst!

- Sven Rautenberg