Hi!
Ein vom User eingestelltes Charset kann wohl Unsinn im readonly-Context erzeugen, beeinflusst dennoch aber die Interpretation dessen, was der User in Formularen eingibt. Ein Server, der auf diesen Mutwillen nicht vorbereitet ist und annimmt, dass solche Daten unter dem gleichen Charset stehen wie die an den browser gesendeten. kann in der Folge Unsinn produzieren. Im Besten Falle wird er durch numerischen Entities überhäuft.
Wie soll eine Anwendung unterscheiden, ob eine Zeichenfolge beabsichtigt oder fälschlicherweise ein NCR ergibt? Und wie soll allgemein ein Server auf ungewollte Eingaben reagieren? Er kann nicht wissen oder mit absoluter Sicherheit ermitteln, ob das was er da bekommt im Sinne des Betreibers ist oder nicht. Es ist übrigens die gleiche Problematik wie mit Spam. Man kann es nicht in allen Fällen automatisiert von Nutztext unterscheiden.
Es gibt durchaus problematische Anwendungen.
z.B. Maillist-Server -> Web-Frontend
Also Anwendungen, die letzlich Quellen, die unter verschiedensten Charsets abgesendet wurden, unter ein einziges Charset stellen müssen.
Alles was nicht ordentlich deklariert ist, führt zwangsläufig ins Chaos. Man kann vielleicht ein paar wenige bekannte Fehler korrigieren, aber nicht alles. Damit muss man leben können.
Jeder Software-Autor sollte sich die Frage stellen: basiert meine Sicherheit auf der Annahme eines Charsets?
Bei HTML gibt's noch die zusätzliche Frage: Können Entities meine Sicherheitsvorkehrungen umgehen?
Wenn ein Encoding zu was auch immer im falschen Kontext vorgenommen wird, kann die Antwort JA lauten.
Ich wüsste grad nicht, was für Sicherheitslücken sich durch ergeben sollen. Schlimmstenfalls gibt es bei Mehrbytekodierungen ungültige Bytesequenzen, die in ein Ersatzzeichen ausgetauscht werden. Wenn man davon ausgeht, dass bei Einfügen in andere Kontexte die beabsichtigte Kodierung mit dem Ziel ausgehandelt wird und die Zeichen gemäß dieses Kontextes und der Kodierung behandelt werden, ergibt es zwar immer noch keinen unsinnigen Inhalt, aber derist wenigstens den umständen entsprechend korrekt maskiert.
Lo!