HyperText Markup Language oder HTML ist die primäre Sprache für Webseiten im Internet. Es umfasst Unterstützung für eine Reihe anderer Sprachen, die zusätzliche Funktionen und Stile wie JavaScript und CSS hinzufügen. Alle diese Sprachen sind textbasiert mit einigen bedeutungsvollen Zeichen, die verwendet werden, um literale Zeichenfolgen zu trennen, die an den Browser ausgegeben werden sollen, und Code, der interpretiert und ausgeführt werden soll.
Dieses Design weist jedoch einige Probleme auf, die offensichtlich werden, wenn Sie eines der aussagekräftigen Zeichen im Browser drucken möchten. Die besten Beispielzeichen für die Verwendung sind die Symbole „kleiner als“ und „größer als“. Entsprechend werden diese Symbole verwendet, um Codesegmente in HTML zu öffnen und zu schließen. Die korrekte Methode zum sicheren Drucken dieser Zeichen auf dem Bildschirm besteht darin, HTML-Entitäten zu verwenden.
HTML-Entitäten und Sicherheit
Da diese Zeichen eine besondere Bedeutung haben, müssen Sie sehr vorsichtig sein, um sie durch die HTML-Entity-Version zu ersetzen, wenn sie im Browser ausgegeben werden sollen. Leider vergessen viele Webentwickler, dass Benutzer auf vielen Websites Eingaben machen können. Wenn diese Benutzereingabe aussagekräftige Zeichen enthält und diese nicht durch HTML-Entitäten ersetzt werden, weist die Website eine Sicherheitslücke beim Cross-Site-Scripting (XSS) auf.
Tipp: Versuchen Sie nicht, Sonderzeichen an Websites zu senden, um XSS-Schwachstellen zu finden. Dies ist technisch gesehen Hacking und stellt eine Straftat dar, es sei denn, Sie haben die Erlaubnis des Eigentümers der Website.
Wie HTML-Entitäten funktionieren (und manchmal auch nicht)
HTML-Entitäten funktionieren, weil der Browser weiß, dass er sie als relevantes Sonderzeichen anzeigt und nicht als Sonderzeichen behandelt. Alle HTML-Entitäten beginnen mit einem kaufmännischen Und „&“ und enden mit einem Semikolon „;“. Die meisten Zeichen werden durch eine Entitätsnummer identifiziert, obwohl einige Sonderzeichen auch einen Kurznamen haben. Beispielsweise haben „&“, „<“ und „>“ die Entitätsnummern „&“, „<“ und „>“ sowie die Entitätsnamen „&“, „<“ und „>“. Der Browser weiß, dass diese Zeichenfolgen bedeuten, dass er die entsprechenden Zeichen anzeigen muss.
Tipp: Eine vollständige Liste der Charakter-Entity-Namen finden Sie hier , obwohl die Unterstützung von Entity-Namen je nach Browser variiert.
In den meisten Fällen sollten Benutzer immer nur die Zeichen sehen, die HTML-Entitäten darstellen. Es ist jedoch möglich, codierte Zeichen, üblicherweise kaufmännisches Und „&“, durch einen Prozess namens „Doppelte Codierung“ zu sehen. Dies geschieht, wenn das kaufmännische Und-Zeichen in seiner eigenen codierten Version erscheint. Doppelte Kodierung tritt im Allgemeinen auf, wenn die Eingabe korrekt kodiert ist, während sie gesendet wird, aber wenn sie ausgegeben wird, wird sie erneut bereinigt. Dies führt dazu, dass das kaufmännische Und am Anfang des „&“ ein zweites Mal codiert wird und als „&“ erscheint, der Browser interpretiert dies dann korrekt als Zeichenfolge, die als „&“ ausgegeben werden sollte, nachdem die HTML-Entität decodiert und ignoriert wurde die Teilinstanz.