Sven Rautenberg: htmlentities vor/nach dem Speichern

Beitrag lesen

Moin!

Aber wie gesagt, wenn man bei der Abfrage aller vom User stammenden Daten diese behandelt, dann würde es ja keine XSS Schwächen mehr geben. Und dies zu realsieren, ist deutlich leicht, und auch sicherer, als jede Ausgabe in dem Script herrauszusuchen und zu behandeln.

Nein. Wenn es einen ganz simplen, einfachen Weg gäbe, sichere Programme zu schreiben, dann wäre der hier sicherlich schon bekannt geworden.

Einfaches Beispiel, warum dein Ansatz nicht gut funktioniert:
Angenommen, das allererste, was du tust, ist das Anwenden von htmlentities auf $_POST und $_GET.

1. Danach erst prüfst du beispielsweise, ob das vom Benutzer angegebene Passwort auch mindestens 8 Zeichen hat.
Angenommen, der Benutzer hat als Passwort "ää" gewählt - was wird deine Prüfung wohl ergeben?

2. Nehmen wir an, dein Passwort soll maximal 20 Zeichen lang sein (mehr kann sich ja auch kein Mensch merken), und damit die Datenbank nicht unnötig lange Felder enthält, hast du das Passwortfeld eben genau 20 Zeichen lang gemacht.
Der Benutzer wählt sich jetzt "äöüßÄÖÜß" als Passwort - Stringlänge nach htmlentities ist 50 Zeichen, über die Hälfte des Passwortes fehlt also plötzlich.

Da man solche Spezialanforderungen an die Datenbehandlung nicht allgemein voraussehen kann, ist folglich eine allgemeine Vorbehandlung der Daten auch nicht möglich, sondern muß immer individuell geschehen. Abgesehen davon sind eingeschmuggelte HTML- oder schlimmer Javascript-Codes nicht das einzige Problem, welches auftauchen kann.

Du kommst also nicht drum herum, deinen Code individuell nach Fehlermöglichkeiten durchzusehen. Das Forum würde dies aber natürlich auch übernehmen können - die eigene Betriebsblindheit ist ja schon sprichwörtlich.

  • Sven Rautenberg