phpbar.de logo

Mailinglisten-Archive

[php] escape bei Ausgabe von Request-Parametern

[php] escape bei Ausgabe von Request-Parametern

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Nov 13 10:18:01 CET 2006


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