Tipps und Tricks rund um .NET und Visual Studio

ASP.NET HTML Encoded Code Expressions in ASP.NET 4.0
Kommentare

Es wurde schon immer empfohlen, alle Ausgaben in Webseiten, die auf Eingaben eines Benutzers basieren, durch die HTML-Zeichencodierung laufen zu lassen, um zu verhindern, dass Benutzer durch eingeschleuste HTML Tags die Formatierung der Seite durcheinander bringen oder gar JavaScript zur Ausführung bringen.

Es wurde schon immer empfohlen, alle Ausgaben in Webseiten, die auf Eingaben eines Benutzers basieren, durch die HTML-Zeichencodierung laufen zu lassen, um zu verhindern, dass Benutzer durch eingeschleuste HTML Tags die Formatierung der Seite durcheinander bringen oder gar JavaScript zur Ausführung bringen.

Ein typisches Beispiel ist ein Forum: Ein Benutzer kann eine Nachricht eingeben. Es wird davon ausgegangen, dass er nur Text eingibt. Aber was passiert, wenn er stattdessen ein JavaScript ablegt? Durch die HTML-Zeichencodierung wird dann erreicht, dass beim Anzeigen einer solchen Nachricht nicht das JavaScript ausgeführt wird, sondern der JavaScript-Quellcode erscheint (Abb. 1).

Abb. 1: Ausgabebeispiel
Abb. 1: Ausgabebeispiel

Schon in ASP.NET 1.0 war die HTML-Zeichencodierung über die Methoden Server.HtmlEncode() und HttpUtility.HtmlEncode() möglich. Diese Methoden konnte man auch in Codeausdrücken in der ASPX-Seite verwenden. Die ASP.NET-Version 4.0 bietet hier nun eine syntaktische Vereinfachung, die hoffentlich mehr Benutzer dazu bewegt, diese Technik auch tatsächlich anzuwenden. Statt <%= Server.HtmlEncode(Zeichenkette) %> oder <%= HttpUtility.HtmlEncode(Zeichenkette) %> kann man nun <%: Zeichenkette %> schreiben. Dabei führt der Doppelpunkt einen Ausdruck ein, auf den die HTML-Zeichencodierung angewendet werden soll. Durch die Anwendung der Klasse HtmlString kann man innerhalb einer HTML-Zeichenkodierung dann doch wieder HTML Tags definieren, die auch ausgeführt werden sollen. Listing 1 zeigt ein Beispiel für die HTML-Zeichencodierung.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HTMLEncode.aspx.cs" Inherits="ASPNET4Demos.NeueFunktionenInServerControls.HTMLEncode" MasterPageFile="~/WWWings.Einfach.master" Title="Demo HTML Encoding" %>

Ohne HTML Encoding: <%= "www.IT-Visions.de" %> 
Altes Verfahren: <%= Server.HtmlEncode("www.IT-Visions.de")%> 
Neue Verfahren: <%: "www.IT-Visions.de"%> 
Ausnahme im neuen Verfahren: <%: new HtmlString("www.IT-Visions.de")%> 

  

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer arbeiten bei www.IT-Visions.de als Softwarearchitekten, Berater und Trainer für .NET-Technologien. Dabei unterstützen sie zahlreiche Unternehmen beim Einsatz von .NET und entwickeln selbst in größeren Projekten. Sie haben zahlreiche Fachbücher geschrieben und gehören seit vielen Jahren zu den Hauptsprechern auf der BASTA!. Manfred Steyer ist zudem für den Fachbereich „Software Engineering“ der Studienrichtung „IT und Wirtschaftsinformatik“ an der FH CAMPUS 02 in Graz verantwortlich. Dr. Holger Schwichtenberg unterrichtet in Lehraufträgen an den Fachhochschulen Münster und Graz.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -