dedlfix: Jquery: Formular ausfüllen (2. Anlauf)

Beitrag lesen

Tach!

PHP hat aber keine Funktion, à la htmlspecialchars() für HTML, die für Javascript-Code vorgesehen ist. Stattdessen kann man json_encode() zuzüglich Anführungszeichen drumherum nehmen.

Das aber dann jetzt nur, um die reine Weitergabe zu garantieren, oder?

Um zu garantieren, dass das, was du da in das Script reinschreiben lässt, kein Code ist, dessen Ausführung du nicht wünschst, sondern lediglich ein String.

Man muss aber sicherstellen, dass in $_POST['myTest'] nur ein String, aber kein Array steckt. Bei geeigneter Verwendung von []-Klammern erzeugt PHP ja nicht nur einen einfachen String, sondern ein Array. Also, ein Typecast zu string ist das mindeste. Bei einem Array kommt dann "Array" als String raus, aber das ist die ungefährliche Variante. Alternativ auf Array testen und die Verarbeitung wegen Betrugsversuchs abbrechen.

Ist denn die Verwendung eines Array das einzig "gefährliche" oder gibt es noch mehr "gefährliche" Zeichen?

In einem $_POST-Eintrag kann sich nur ein String oder ein Array befinden - solange es von PHP bereitgestellt und nicht durch deinen Code manipuliert wurde.

Gefährliche Zeichen sind all diejenigen, die dazu führen, dass die von dir mit dem Anführungszeichen eingeleitete Zeichenkette vorzeitig als beendet erkannt werden kann.

Moment mal, da hab ich was falsches in Erinnerung und erzählt. json_encode() gibt einen String bereits mit passenden Anführungszeichen zurück. Allen weiteren Inhalt maskiert die Funktion ordnungsgemäß.

Wenn du was testen möchtest, probier mit Zeichen, die in Sting-Literalen von Javascript eine besondere Bedeutung haben, also Anführungszeichen, Zeilenumbrüche und das Maskierzeichen \.

Ein Array wird von json_encode() vollständig in ein gültiges Array-Literal umgewandelt. Das Problem hieran ist nur, dass dein Javascript-Code eine String annimmt und bei einem Array zumindest außer Tritt kommen kann.

dedlfix.