ChrisB: Behandlung von Formularwerten

Beitrag lesen

Hi,

  1. Link aus POST-Variablen (z. B. bild.jpg) basteln. Etwa so:
            <a href="http://eineurl/<?php echo $variable_verzeichnis ?>/<?php echo $variable_datei ?>">Link</a>

Hoppla, wo ist die Behandlung fuer den Ausgabekontext HTML geblieben?

Wie sollte ich hier die POST-Variablen behandeln, wenn ich verhindern möchte, dass z.B. auf übergeordnete Verzeichnisse zugegriffen wird (z.B. wenn Inhalt von $variable_datei = ../../verzeichnis/datei.jpg)

Mach dir klar, welches Szenario hier (zusatzlich) vorliegt.

Mit dem htmlspecialchars geht es dir erst mal darum, die Zeichen "unschaedlich" zu machen, die im Kontext HTML eine Sonderbedeutung haben koennten.

Hier kommt jetzt der Kontext "Pfadangabe" hinzu (bloed gewaehlt, aber mir faellt gerade nichts besseres ein).
Da sind bestimmte andere Zeichen(kombinationen) ggf. "schaedlich". Natuerlich musst du erst mal vorher definieren, welche das sein koennten - mit "../ macht etwas, das ich hier nicht will" hast du ja bereits einen Fall gefunden.
Dann ueberlege dir, wie du damit umgehen willst - ganz verbieten (Daten mit Fehlermeldung ablehnen), entschaerfen (../ einfach rauswerfen), ...?
Stringfunktionen, regulaere Ausdruecke helfen dabei weiter.
Und in diesem speziellen Fall u.U. auch noch Funktionen wie basename, realpath o.ae.

MfG ChrisB