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

Beitrag lesen

Hallo dedlfix,

so Du keiner bist, ist an Dir wirklich ein Lehrer der Extraklasse verloren gegangen.

Das erzeugt unter Umständen ungültigen Javascript-Code. Gültig ist er nur, wenn in $_POST['myTest'] ein Wert steht, den Javascript als Zahlenliteral erkenen kann. Oder als Variablenname (einer Variable im Javascript-Code) oder als anderweitig gültigen Javascript-Code.

Soweit schonmal den Fehler gefunden und erklärt.

Und jezt wirds richtig interessant:

Und das ist auch ein großes Problem, weil damit beliebiger Javascript-Code eingefügt werden kann. Wenn du stattdessen aus Sicht von Javascript lediglich ein Stringliteral sehen möchtest, fehlen da Anführungszeichen sowie eine kontextgerechte Behandlung des Inhalts von $_POST['myTest'].

Hab' ich echt nicht dran gedacht.

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?

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?

Pit