Kontextwechsler: XSS-Lücke

Beitrag lesen

Bist Du der Meinung, dass man bei Seiten, deren Inhalte nicht von Dir gepflegt werden, generell die "Natur" der Datenbankinhalte in Frage stellt, auch wenn diese Inhalte _keine_ HTML-eigenen Zeichen enthalten, da es sich um z.B. Preislisten oder ähnliches handelt, deren Eingabe nur von bestimmten Personen manuell vorgenommen werden können (mittels Login über eine entsprechend programmierte Maske usw.)?

Vollkommen egal. Wenn definiert ist, dass in der Datenbank "plain text" steht, dann sind <, > und & gültige Plain-Text-Zeichen. Diese müssen in HTML immer als Entity ausgegeben werden - auch wenn sie vielleicht niemals in die Datenbank EINGEGEBEN werden. Man weiß es vorher nicht.

Oder würdest Du auch in einem solchen Falle sagen, dass ein solches Login in falsche Hände fallen könnte, wodurch dann die Maske auch keine ausreichende Sicherheit darstellte und XSS wieder möglich sei?

Das Login ist wirklich das kleinere Problem. Entscheidend ist: Die Inhalte der Datenbank stehen nicht für immer unter deiner eigenen Kontrolle. Und selbst wenn das so wäre, würdest du trotzdem erstmal eines der drei bösen HTML-Zeichen direkt eingeben, dann (hoffentlich zeitnah!) feststellen, dass die Browserfehlerkorrektur dann doch falsch rät, und das Zeichen dann manuell in der DB in eine Entity wandeln.

All das kann man sich auch sparen, wenn man gleich vernünftig codiert - und zwar immer und grundsätzlich, nicht nur bedarfsweise.