Mailinglisten-Archive |
Hi Stephan, Am Montag, 13. November 2006 10:06 schrieb Stephan Beck: > Hallo Lutz, > > Lutz wrote: > >> Wie handhabt ihr die Ausgabe von _REQUEST-Parametern in > >> html-inputs, z.b. > >> > >> <input type="text" name="my_name" value="<?php echo $my_value; ?>" > >> /> > >> > >> Sobald in $my_value ein doppeltes Anführungszeichen vorkommt, wird > >> dadurch der input-Tag zerschossen, einzelne Anführungszeichen > >> sollten aber nicht escaped werden. > > > >guck mal hier: > >http://de.php.net/manual/de/function.htmlspecialchars.php > > > >:-) > > Dass es in die Richtung viele Möglichkeiten gibt ist mir sco nklar, > aber heisst das du hängst jedesmal den Funktionsaufruf für > htmlspecialchars davor? Oder hast du eine Klasse, die dir Formulare > generiert? > Oder eine spezielle Funktion, die dir nur die doppelten > Anführungszeichen escaped? > > Wie gesagt: ich weiß, dass es viele Umsetzungsmöglichkeiten gibt. > Ich nutze derzeit auch die htmlspecialchars-Umwandlung, wollte aber > mal schaun, ob es andere Leute gibt, die das Problem auf andere und / > oder elegantere Weise gelöst haben... ah, ok. :-) Dann sag das doch. ;-) Also sagen wir es so: Irgendwo wirst Du die einzusetzenden Werte einmal maskieren müssen. An welcher Stelle Du das sinnvollerweise tust, hängt ein Bißchen von Deiner Anwendung ab. Da htmlspecialchars() eingesetzt wird, um Zeichenketten für das Einsetzen in Parameter von HTML-Tags zu verwenden - es geht nicht nur um Formularfelder -, ist meine Meinung, daß die Anwendung dieser Funktion grundsätzlich schon einmal in die Präsentationsschicht gehört. Außerdem denke ich, daß die Funktion relativ spät Anwendung finden kann, letztlich eigentlich im Template und dort genau an der Stelle, wo der Wert eingesetzt werden soll. Der Grund ist, daß dies die zentrale Stelle ist, wo der Wert garantiert nur einmal vorbeikommen kann. Wenn man hier mit htmlspecialchars() ansetzt, ist unter allen Umständen sichergestellt, daß der eingesetzte Wert dann maskiert ist. Das wäre meine Sicht der Dinge, die ich damit hier zur Diskussion stelle. Bei Smarty ist es übrigens so, daß es eine escape-Funktion gibt, die im Template zur Verfügung steht. Ich denke, das geht dann auch in die Richtung, in die ich argumentiert habe. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive