Moin!
Deinem Geschreibenen stimme ich zwar zu, aber der Einwand von Candid Dauth ist mir auch schon einmal hier im Forum untergekommen. Das ist so wie Candid Dauth schreibt in der Art ${...} oder &{...} gewesen. Das ist irgendein Gedöns, was der IE interpretiert und mit JavaScript eher weniger zutun hat, aber gleiche Effekte bewirken konnte.
Aber es würde ja auch nie wirksam, da das Dollarzeichen sowieso keine Sonderfunktion in HTML hat, und das Und-Zeichen als Entity im Browser landen würde. Und &{...} ist nun mal nachweislich unschädlich.
Nochmal ganz allgemein gesprochen: Wenn man jeglichen Userinput als Textdaten versteht und sie auch wieder als Text im Browser ausgibt - das setzt zwingend die Codierung von HTML-aktiven Zeichen als Entities voraus, sonst kommt kein Text im Browser an - dann besteht keinerlei Gefahr für irgendwelche Angriffslücken, an die man nicht gedacht hat.
Wenn man hingegen Text un- oder schlechtgefiltert an den Benutzer ausgibt, dann hat man möglicherweise ein Problem. Die Idee, bestimmte HTML-Tags zuzulassen, diese dann aber inklusive aller Attribute - auch der javascripthaltigen - ungeprüft durchzuschleifen, ist natürlich ziemlich unpraktisch.
Genau deshalb ist der Einsatz von BB-Code (dafür gibts viele schöne Klassen und/oder Funktionen zur Wandlung in HTML in vermutlich allen existierenden Sprachen) zur Formatierung von Text extrem vorzuziehen, weil der BB-Code-Parser automatisch prüfen muß, ob der BB-Code valide ist, und er wird nur vollständig validen Code in HTML umsetzen (klar, schlechte BB-Code-Funktionen machen da möglicherweise etwas mehr Mist und geben ungültiges HTML raus, weil nur Stringersetzungen vorgenommen wurden, aber tendentiell wird bei solchen Ersetzungen die Erlaubnis von beliebigen Attributen gerade NICHT gegeben).
Insgesamt sehe ich das Problem weitaus weniger gravierend. Mit der Wandlung sämtlichen Textes in Entities kann nichts passieren, egal was der Angreifer anstellt - damit hat man dann aber auch nur unformatierten Text, allenfalls ein nl2br ginge noch zusätzlich. Mit exakt definiertem BB-Code dürfte ebenfalls kein Risiko bestehen. Und das unveränderte Durchschleifen von Texteingaben verwende ich, wenn es um die Bearbeitung von HTML-Quellcode im Rahmen eines CMS geht, der Eingeber/Angreifer also weiß, was er tut, und das mit voller Absicht.
- Sven Rautenberg