php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2011, 09:47  
Benutzer
 
Registriert seit: 18.04.2010
Beiträge: 35
PHP-Kenntnisse:
Anfänger
F234k befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] [AJAX] Daten werden automatisch unescaped

Guten Tag liebe Forumler,

ich arbeite gerade an einer Seite, die AJAX verwendet und habe mir einen JSON-Encoder für JS gebastelt, der die einzelnen Werte auch gleich escaped. Der funktioniert auch super. Wenn ich jetzt einen Request sende und mir den in Firebug anschaue dann stehen bei "Post" bei der "Quelle" noch die verschlüsselten Daten und darüber bei "Paramater" sind sie unverschlüsselt. Am Server kommen sie dann auch unverschlüsselt an. Wieso macht der Browser das und wie kann ich das verhindern? Es hat funktioniert, als ich alles doppelt escaped habe und doppelt unescaped, aber das soll nicht die Lösung sein. Einer eine Idee?

MfG F234k
F234k ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.08.2011, 10:06  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zeig doch mal ein Beispiel und auch wo dir das Probleme bereitet. Ich glaube nämlich ehrlich gesagt dass du überhaupt kein Problem hast und nur den Sinn vom Escapen missverstehst. Unescapen sollte eigentlich nirgendwo nötig sein, es ist auch keine "Verschlüsselung" sondern dient nur dazu dass der JSON-String korrekt geparst werden kann.
fab ist offline   Mit Zitat antworten
Alt 27.08.2011, 10:16  
Benutzer
 
Registriert seit: 18.04.2010
Beiträge: 35
PHP-Kenntnisse:
Anfänger
F234k befindet sich auf einem aufstrebenden Ast
Standard

Okay ...
Bei jedem Request werden erstmal eine "session_id" und die "function" (alle Requests gehen an eine Datei und die Funktion ist dann die Aktion, die durchgeführt werden soll) gesendet. Dazu kommen dann noch andere Daten wie z.B. ein weiterer escaped'er JSON-String. Alles zusammen wird auch zu einem JSON-String gemacht. D.h. es sind teilweise JSON-Strings ineinander verschachtelt und deshalb escape ich auch.

Und so sieht dann alles aus:

Escaped:
data={"content":"%7B%22background_color%22%3A%22%2 52523006699%22%2C%22background_image%22%3A%22http% 25253A//localhost/uploads/userx/trans.gif%22%2C%22background_repeat%22%3A%22repeat %22%2C%22background_position%22%3A%22center%22%2C% 22background_attachment%22%3A%22scroll%22%2C%22ima ge%22%3A%7B%22n3%22%3A%7B%22top%22%3A%2290%22%2C%2 2left%22%3A%22200%22%2C%22width%22%3A%22200%22%2C% 22height%22%3A%22140%22%2C%22link%22%3A%22/images/site_widget_image.jpg%22%7D%2C%22n1%22%3A%7B%22top %22%3A%22120%22%2C%22left%22%3A%220%22%2C%22width% 22%3A%22200%22%2C%22height%22%3A%22100%22%2C%22lin k%22%3A%22/images/site_widget_image.jpg%22%7D%2C%22n2%22%3A%7B%22top %22%3A%2260%22%2C%22left%22%3A%22400%22%2C%22width %22%3A%22200%22%2C%22height%22%3A%22180%22%2C%22li nk%22%3A%22/images/site_widget_image.jpg%22%7D%2C%22n4%22%3A%7B%22top %22%3A%2230%22%2C%22left%22%3A%22600%22%2C%22width %22%3A%22210%22%2C%22height%22%3A%22220%22%2C%22li nk%22%3A%22/images/site_widget_image.jpg%22%7D%7D%2C%22text%22%3A%7B% 22n1%22%3A%7B%22top%22%3A%22360%22%2C%22left%22%3A %22400%22%2C%22width%22%3A%22500%22%2C%22height%22 %3A%2250%22%2C%22content%22%3A%22http%25253A//t1.gstatic.com/images%25253Fq%25253Dtbn%25253AANd9GcR9t7zJhE20rCh cApXmAk3pnIyJE-LpMgz7Jbfo-JYq32U9N6179g%22%7D%2C%22n2%22%3A%7B%22top%22%3A%2 2360%22%2C%22left%22%3A%220%22%2C%22width%22%3A%22 370%22%2C%22height%22%3A%2260%22%2C%22content%22%3 A%22http%25253A//t1.gstatic.com/images%25253Fq%25253Dtbn%25253AANd9GcR9t7zJhE20rCh cApXmAk3pnIyJE-LpMgz7Jbfo-JYq32U9N6179g%22%7D%7D%7D","session_id":"97fkRCkZT rS7bGp0UiNU4hT0iWQOj2bW9SrqgezXekEddTGojQ","functi on":"site_menu_bottom_save"}

Beim Request:
{"content":"{"background_color":"%2523006699","bac kground_image":"http%253A//localhost/uploads/userx/trans.gif","background_repeat":"repeat","backgroun d_position":"center","background_attachment":"scro ll","image":{"n3":{"top":"90","left":"200","width" :"200","height":"140","link":"/images/site_widget_image.jpg"},"n1":{"top":"120","left":" 0","width":"200","height":"100","link":"/images/site_widget_image.jpg"},"n2":{"top":"60","left":"4 00","width":"200","height":"180","link":"/images/site_widget_image.jpg"},"n4":{"top":"30","left":"6 00","width":"210","height":"220","link":"/images/site_widget_image.jpg"}},"text":{"n1":{"top":"360" ,"left":"400","width":"500","height":"50","content ":"http%253A//t1.gstatic.com/images%253Fq%253Dtbn%253AANd9GcR9t7zJhE20rChcApXmA k3pnIyJE-LpMgz7Jbfo-JYq32U9N6179g"},"n2":{"top":"360","left":"0","widt h":"370","height":"60","content":"http%253A//t1.gstatic.com/images%253Fq%253Dtbn%253AANd9GcR9t7zJhE20rChcApXmA k3pnIyJE-LpMgz7Jbfo-JYq32U9N6179g"}}}","session_id":"97fkRCkZTrS7bGp0U iNU4hT0iWQOj2bW9SrqgezXekEddTGojQ","function":"sit e_menu_bottom_save"}
F234k ist offline   Mit Zitat antworten
Alt 27.08.2011, 10:25  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von F234k Beitrag anzeigen
Okay ...
Bei jedem Request werden erstmal eine "session_id" und die "function" (alle Requests gehen an eine Datei und die Funktion ist dann die Aktion, die durchgeführt werden soll) gesendet. Dazu kommen dann noch andere Daten wie z.B. ein weiterer escaped'er JSON-String. Alles zusammen wird auch zu einem JSON-String gemacht. D.h. es sind teilweise JSON-Strings ineinander verschachtelt und deshalb escape ich auch.
Du escapest da überhaupt nichts sondern URL-kodierst... beim Request (über GET nehme ich an) löst der Server das selber wieder auf.

So oder so macht das aber keinen Sinn, du kannst JSON-Objekte beliebig verschachteln ohne irgendwas zu escapen.

Wenn du also die Anführungszeichen weglässt hast du bereits valides JSON (eingerückt nur zur besseren Lesbarkeit):

Code:
{
  "content":{
    "background_color":"%2523006699",
    ...
  },
  "session_id":"97fkRCkZTrS7bGp0UiNU4hT0iWQOj2bW9SrqgezXekEddTGojQ",
  "function":"site_menu_bottom_save"
}
fab ist offline   Mit Zitat antworten
Alt 27.08.2011, 10:29  
Benutzer
 
Registriert seit: 18.04.2010
Beiträge: 35
PHP-Kenntnisse:
Anfänger
F234k befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fab Beitrag anzeigen
beim Request (über GET nehme ich an)
über POST

Zitat:
Zitat von fab Beitrag anzeigen
So oder so macht das aber keinen Sinn, du kannst JSON-Objekte beliebig verschachteln ohne irgendwas zu escapen.
Du hast recht, das habe ich mir auch gerade schon gedacht, ich muss nur anders auswerten mit PHP.

Danke

EDIT: Achso, das heißt jetzt aber, dass ich Anführungsstriche aus den Benutzereingaben entfernen muss? Wie mache ich das dann?

Geändert von F234k (27.08.2011 um 10:44 Uhr).
F234k ist offline   Mit Zitat antworten
Alt 27.08.2011, 11:04  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Gehören die Anführungszeichen um den inneren JSON-String zur Benutzereingabe? Ansonsten musst du nichts entfernen
fab ist offline   Mit Zitat antworten
Alt 27.08.2011, 15:29  
Benutzer
 
Registriert seit: 18.04.2010
Beiträge: 35
PHP-Kenntnisse:
Anfänger
F234k befindet sich auf einem aufstrebenden Ast
Standard

Naja, angenommen der Benutzer kann "background_color" festlegen und fügt in seine Eingabe Anführungszeichen ein, kommt dann nicht Mist raus?

z.B.: "background_color":"text"zitat"text"
F234k ist offline   Mit Zitat antworten
Alt 27.08.2011, 16:18  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Da kommt das richtige Escapen ins Spiel:

Code:
"background_color":"text\"zitat\"text"
fab ist offline   Mit Zitat antworten
Alt 27.08.2011, 19:08  
Benutzer
 
Registriert seit: 18.04.2010
Beiträge: 35
PHP-Kenntnisse:
Anfänger
F234k befindet sich auf einem aufstrebenden Ast
Standard

Und wie automatisiere ich das? Gibt es einen Javascript-Befehl?
F234k ist offline   Mit Zitat antworten
Alt 28.08.2011, 00:27  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Nicht direkt. Du kannst dir mal ansehen, wie es andere gelöst haben, z.B. Json2.js - wenn es nicht gerade zu Lernzwecken ist, solltest du sowieso lieber darauf zurückgreifen anstatt das Rad neu zu erfinden. Aktuelle Browser bringen die Funktionalität ohnehin bereits nativ mit und Bibliotheken wie Json2 greifen soweit möglich darauf zurück, dienen letztendlich also nur als Fallback-Lösung.
fab ist offline   Mit Zitat antworten
Antwort


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
Vie Formular empfangene Daten berarbeiten und an remote PHP Skript senden fr3sh PHP Einsteiger 4 27.01.2011 10:20
Menü mittels php automatisch an Inhalt von text-Datenbank anpassen - Lösung UdoDirk PHP Tipps 2010 0 15.07.2010 14:31
[Erledigt] CSV-Datei erstellen und Daten reinschreiben DiaryOfDreams PHP Tipps 2010 6 04.06.2010 11:07
Daten automatisch archivieren Chili-Schaf Datenbanken 5 26.05.2010 21:20
[Erledigt] geänderte Daten übergeben ? danyh Datenbanken 3 17.03.2010 12:00
Formular mit Daten füllen mrmister PHP Tipps 2010 1 11.03.2010 12:13
Nach Datenbankeintrag automatisch zur Website zurück? Blade PHP Tipps 2010 3 28.01.2010 15:29
Website in XML-Format öffnen und Daten in DB schreiben...aber nur wie ? Oli Krause PHP Tipps 2009 11 22.03.2009 12:36
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
Scriptsuche Suche Script zum einpflegen von daten... derTorsten1909 Scriptbörse 17 10.01.2009 18:22
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten Eingabe automatisch ergänzen superbike PHP Tipps 2005-2 1 18.08.2005 13:54
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php javascriptbefehl escapen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:25 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