dedlfix: PHP Textarea - prüfen und pharsen

Beitrag lesen

Tach!

In jedem PHP Buch, dass ich zu GET & POST gelesen habe steht, "vertraue niemals Daten von außen". Daher dachte ich `$data_html = filter_input(INPUT_GET, 'text', FILTER_SANITIZE_SPECIAL_CHARS);

Das ist meiner Ansicht nach der falsche Ansatz. Probleme entsteht nicht anhand der Herkunft von Daten, sondern dass sie am Zielort unpassend zusammengebaut werden. Zudem hat jeder Kontext seine eigenen Regeln, welche Zeichen in welcher Weise zu beachten / behandeln sind. Woher die Daten kommen, spielt dabei keine Rolle. Wenn du bereits am Eingang "saubere" Daten haben möchtest, bleiben quasi nur noch Buchstaben und Ziffern übrig, die meistens nicht behandelt werden müssen, weil sie nicht in dem einen oder anderen Kontext eine Sonderbedeutung haben.

Mein Ansatz ist daher, am Eingang nur fachliche Prüfungen vorzunehmen, beispielsweise dass Wertebereiche eingehalten werden. Und wann immer Daten nach außen gehen, bekommen sie genau dann die für das Ziel passende Behandlung. Nicht eher. Für HTML ist das htmlspecialchars(), für SQL das, was die verwendete Datenbankschnittstelle vorsieht.

$data_intern = filter_input(INPUT_GET, 'text', FILTER_SANITIZE_ENCODED);` müsste reichen, kann ich hier mehr tun?

Die Frage ist: "wofür reichen?" Du kannst das am Eingang nicht wissen, wo überall die Daten landen werden. Es sei denn, dein Script besteht nur aus drei Zeilen, sozusagen.

Mehr zum Thema: Kontextwechsel.

dedlfix.