Der Martin: Eingaben sicher ausgeben.

Beitrag lesen

n'Abend,

Ich habe hier oft gelesen, dass man Benutzereingaben kontextspezifisch maskieren soll.

nein, da hast du etwas missverstanden. Nicht Eingaben, sondern _Aus_gaben in einen bestimmten Kontext müssen spezifisch für eben diesen Kontext maskiert oder codiert werden.

Im Fall von Html mit htmlspecialchars().

Genau.

Ich habe neulich "irgendwo" gelesen, dass das nicht immer hilft. Z.B. Wenn der Benutzer Attribute von html-Elementen bearbeiten kann. on...- oder style-Attribute z.B. bzw. sogar externe CSS-Dateien durch die JavaScript ausgeführt wird.

Naja, wenn der Nutzer Teile des tatsächlichen Codes bearbeiten kann, sieht das alles wieder ganz anders aus. Die üblichen Maskierungsregeln zielen ja darauf ab, dass neutrale Daten eben _nicht_ unbeabsichtigt als Codes interpretiert werden.

In verschiedenen CMS finde ich sehr aufwändige Funktionen um Benutzereingaben für solche Fälle zu filtern.

Ja, das kann ich mir vorstellen. Das ist dann tatsächlich beliebig kompliziert.

Offenbar ist man mit htmlspecialchars() alleine doch nicht immer auf der sicheren Seite.

Nicht, wenn man den Anwendungsbereich verlässt, für den diese Funktion gedacht ist.

Wie kann ich jetzt als "Hobbyprogrammierer" vorgehen wenn ich nicht unbedingt sofort auf so ein Framework (und deren Funktionen) zurückgreifen will oder kann? Zumal die ja auch ab und an wegen Sicherheitslücken im Gespräch sind.

Wenn deine Nutzer Programm- oder Markup-Code bearbeiten sollen, steckst du sofort bis zum Hals in potentiellen Sicherheitsproblemen!

Was kann ich tun?

Dem Anwender diese Freiheiten nehmen, oder mit allen möglichen Konsequenzen leben, oder sehr, sehr viel Aufwand treiben, um mögliche Schwachstellen auszubügeln.

So long,
 Martin

--
Der Alptraum jedes Computers:
"Mir war, als hätte ich gerade eine 2 gesehen."
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(