| Danke, Thilo! |
| ... |
» schneegans.de » Web » IE bevorzugt UTF-7-Codierung
Neuere Versionen des Internet Explorers interpretieren Zeichensequenzen in einem HTML-Dokument, die aus einem + und einem Zeichen des Base64-Alphabets bestehen (z. B. +1 oder internationale Telefonnummern), nicht als ASCII, sondern als UTF-7.
Dazu müssen folgende Voraussetzungen gegeben sein:
Content-Type-Header noch durch das entsprechende meta-Element wird für das Dokument eine Zeichencodierung angegeben. (Die Angabe einer Zeichencodierung in einer XML-Deklaration ist aber möglich, denn sie wird von IE für text/html-Ressourcen ignoriert.)\ oder ö, wird nicht mehr mit UTF-7 dekodiert.Sie können den Effekt an einer Testseite beobachten, die einen Absatz
<p>+APw-</p>
enthält. Diese Zeichenkette bedeutet ASCII-codiert nichts anderes als eben +APw-, UTF-7-codiert aber ü. Der Internet Explorer geht im Gegensatz zu sämtlichen anderen Browsern tatsächlich von UTF-7-Codierung aus:
Interessanterweise läßt sich diese Codierung manuell überhaupt nicht auswählen. Der IE benutzt sie nur, wenn das Dokument mit einem UTF-7-BOM (+/v8-) beginnt oder diese Codierung durch den HTTP-Content-Type-Header bzw. das entsprechenden meta-Element festgelegt wird.
Die automatische Erkennung von UTF-7 stellt auch ein ernstes Sicherheitsproblem dar. Denn IE erkennt in
+ADw-script type+AD0-'text/javascript'+AD4-alert(+ACI-Foo+ACEAIg-)+ADsAPA-/script+AD4-
durchaus ein script-Element und führt den enthaltenen Code aus. Filter, die mit regulären Ausdrücken nach <script o.ä. suchen, sind hier wirkungslos.
Von einem Bug sollte man hier freilich nicht sprechen. Die HTML-Spezifikation stellt unmißverständlich fest:
Therefore, user agents must not assume any default value for the "charset" parameter.
In HTML gibt es also – im Gegensatz zu XHTML – keine Standardcodierung, weder ISO-8859-1 noch ASCII. Bei einem Dokument, für das keine Codierung angegeben wird, darf ein Benutzeragent also gleichermaßen ASCII- oder UTF-7-Codierung annehmen. Andererseits muß sich Microsoft fragen lassen, ob die Wahl, die der IE hier trifft, besonders glücklich ist. Es existieren zwar einige wenige UTF-7-codierte Webseiten, aber für die lohnt sich die Heuristik wirklich nicht.
Autoren können dieses Problem – und etliche andere – einfach vermeiden, indem sie stets die Codierung ihrer Dokumente deklarieren. IE-Benutzer können über Ansicht → Codierung eine andere Codierung explizit angeben. Mit Westeuropäisch (Windows) oder Westeuropäisch (ISO) sollten die meisten Dokumente korrekt dargestellt werden. Ansicht → Codierung → Automatische Auswahl kann dann aktiviert bleiben, das ist die empfohlene Einstellung.