php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.10.2006, 16:09  
Neuer Benutzer
 
Registriert seit: 14.10.2006
Beiträge: 5
Manni2k
Standard Probleme bei Speicherung von serialize() Strings

Guten Tag,

ich bin gerade dabei ein Nachrichtensystem zu bauen und habe dabei einige Probleme. Ersteinmal zur Einleitung:

jeder Account hat in meiner DB u.a. zwei Datensätze, message_im (Posteingang) und message_out (Postausgang).
Dort speicher ich einen serialize()-String ab, welcher u.a. die Empfangszeit, Überschrift der Nachricht und die Nachricht selbst enthält.

Nun zu den Problemen:

1)
Habe ich einen Text und serialisiere ich ihn, um hn in der DB abzuspeichern, entsteht z.B. folgendes Fragment:

[...]i:1;s:9:"'~*´`\ß"[...]
Der eigentiche text war also: '~*´`\ß

Korrekterweise müsste er als textlänge 7 anzeigen, aber an diese 7 komme ich direkt nicht dran, die kann ich nicht ändern - Die generiert erautomatisch bei serialize().
Wenn er also als textlänge 9 anzeigt, kann ich diesen String nicht unserialisieren. What to do?

2)
Ähnliche Probleme häufen sich:
pro Zeilenumbruch ist die Textlänger immer um einen Zahlenwert zu klein.

Wie kann man diese Probleme am besten lösen?

Vielen Dank schonmal!

MfG,
Sören Jentzsch
Manni2k ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.10.2006, 16:47  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Vor dem serialize() mit stripslashes() drüberfahren und vor dem Einfügen in die DB entsprechend maskieren, bei MySQL mit mysql_real_escape_string().

Und lies Dir mal an, was slashes, SQL-Injections, Cross-Site-Scripting usw. sind, denn wenn Du noch nie was mit Maskierungen gemacht hast, strotzen deine Scripte zwangsweise vor Sicherheitslücken.
__________________
mod = master of disaster
Waq ist offline  
Alt 14.10.2006, 16:47  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo und willkommen im Forum
Ich verstehe gerade nicht was du mit der Textlänge meinst und warum sie relevant ist.
Wie wärs du weist Empfangszeit, Überschrift und Nachricht jeweils eine eigene Spalte in message_im/message_out zu, dann brauchst du auch nicht serialisieren.
Zergling-new ist offline  
Alt 14.10.2006, 16:50  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von Zergling
Ich verstehe gerade nicht was du mit der Textlänge meinst und warum sie relevant ist.
Erst ist ein slash da, dann wieder nicht, und unserialize() erkenne den Inhalt nicht wieder.
__________________
mod = master of disaster
Waq ist offline  
Alt 14.10.2006, 18:32  
Neuer Benutzer
 
Registriert seit: 14.10.2006
Beiträge: 5
Manni2k
Standard

Zitat:
Vor dem serialize() mit stripslashes() drüberfahren
nein, dann denkt die unserialize()-Funktion nach dem " im text wäre schluss
[Beispiel: [...]i:1;s:9:"'~"*´`\ß"[...] ]
Dann wäre nach der Tilde Schluss -.-

Ich habs jetzt einfach folgendermaßen gemacht:
zeichen wie ' und " und \ werden gelöscht. Punkt, aus, fertig.
Müsste alle Probleme erstmal beseitigen (jedenfalls bin ich auf keine mehr gestoßen).

Ich frage mich allerdings gerade, wie man SQL-Injections ausführt, wenn die nachricht nur ein Teil eines serialisierten Strings ist und dieser Teil in Anführungszeichen ohne Unterbruchungen wie ' " und \ auskommt.

Zitat:
Wie wärs du weist Empfangszeit, Überschrift und Nachricht jeweils eine eigene Spalte in message_im/message_out zu, dann brauchst du auch nicht serialisieren.
Ist doch viel praktischer den ganzen Posteingang oder Postausgang als einen String zu handhaben bzw. als einem Array wenn er unserialisiert wurde.[/quote][/code]
Manni2k ist offline  
Alt 14.10.2006, 19:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Wie wärs du weist Empfangszeit, Überschrift und Nachricht jeweils eine eigene Spalte in message_im/message_out zu
Nochmal der Hinweis darauf, was du machst ist Bullshit!
Zergling-new ist offline  
Alt 14.10.2006, 21:11  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von Manni2k
Zitat:
Vor dem serialize() mit stripslashes() drüberfahren
nein, dann denkt die unserialize()-Funktion nach dem " im text wäre schluss
Falsch. PHP-interne Funktionen brauchen keine magix quotes.

Was Du da anstellst ist erstens zu kompliziert und kracht sobald mal ein Zeichen vorkommt, dass Du vergessen hast zu entfernen.
__________________
mod = master of disaster
Waq ist offline  
Alt 15.10.2006, 00:07  
Neuer Benutzer
 
Registriert seit: 14.10.2006
Beiträge: 5
Manni2k
Standard

Zitat:
Was Du da anstellst ist erstens zu kompliziert und kracht sobald mal ein Zeichen vorkommt, dass Du vergessen hast zu entfernen.
Ich habe doch die fehlerquellen beseitigt: ', " und \ sind entfernt.
Wo sollte es dann noch krachen?


Zitat:
was du machst ist Bullshit
Wie hättest du es denn gerne?
Ersteinmal "Spalte in message_in" ect. is Quark, nochmal zu meiner DB-Struktur:
Die Tabelle heißt "messages". In ihr gibts Spalten, wie id, acc_id, message_in und message_out. Sollte ich dort ZUSÄTZLICH noch spalten wie empfangszeit ect. machen, müssen die auch Arrays aufnehmen, d.h. ich müsste das wieder mit serialize() lösen. Wie würdest du das gestalten? Ich lasse mich gerne eines besseren belehren, aber dann pack dein Wortschatz wie "Bullshit" schnell mal wieder ein =)
Manni2k ist offline  
Alt 15.10.2006, 00:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.256
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

wieso nutzt du nicht ne egene tabelle für die nachrichten und verknüpfst die über eine id mit dem enspr. user?
z.b.
ID | Empfangszeit | Überschrift | Nachricht | Typ (in/out)
nikosch ist offline  
Alt 15.10.2006, 01:34  
Neuer Benutzer
 
Registriert seit: 14.10.2006
Beiträge: 5
Manni2k
Standard

ja, im nachhinein wäre das sicher eine gute alternative, vielleicht auch die geläufigste.
allerdings, meine ich, wäre die probleme jetzt bei mir beseitigt mit dem entfernen der 3 zeichen.
oder sind mir einige entscheidende vorteile bei deinem vorgeschlagenen system entgangen?
Manni2k ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
TAB innerhlab eines Strings. GELight PHP Tipps 2006 8 10.07.2006 21:16
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Unterschiede in Strings finden PHP-Fortgeschrittene 1 18.04.2006 12:56
[Erledigt] Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
[Erledigt] Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
serialize() und unserialize() PHP Tipps 2005-2 11 22.06.2005 13:20
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
alle Positionen eines Strings innerhalb eines Strings finden PHP Tipps 2005 8 23.02.2005 20:21
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
strings sortieren aircrash PHP Tipps 2004-2 5 23.12.2004 16:57
Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Strings saeubern PHP Tipps 2004 2 12.10.2004 15:52
Immer noch Probleme mit serialize und unserialize PHP-Fortgeschrittene 13 15.08.2004 13:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php serialize umlaute, php serialize sonderzeichen, serialize umlaute, php serialize anführungszeichen, serialize php, php serialize, serialize anführungszeichen, php serialize string, serialize php umlaute, php serialize umlaut, serialize sonderzeichen, php serialize alternative, php serialize hochkomma, umlaute serialize, php serialize problem, php serialize umlauts, php serialize zeilenumbruch, serialize zeilenumbruch, http://www.php.de/php-tipps-2006/42513-probleme-bei-speicherung-von-serialize-strings.html, serialize umlaute php

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.