| Danke, Thilo! |
| ... |
HtmlEncode-Funktion» schneegans.de » ASP.NET » Ersatz für fehlerhafte HtmlEncode-Funktion
Die Methoden HttpServerUtility.HtmlEncode und HttpUtility.HtmlEncode im .NET-Framework 1.1 sind fehlerhaft implementiert.
ä oder ü maskiert. Diese Ersetzung ist zwar nicht notwendig, aber meistens auch nicht schädlich. Jedoch werden Zeichen wie € oder α nicht maskiert. Das Verhalten der Funktionen ist also kaum vorhersehbar.' kann in HTML und XML aber wie " als Begrenzer von Attributwerten verwendet werden. Ein unmaskiertes ' im Attributwert ist dann nicht zulässig.Ich verwende als Alternative folgende Funktion:
Function HtmlSpecialChars(ByVal s As String) As String
Dim sb As New System.Text.StringBuilder(s)
Return sb.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("""", """).Replace("'", "'").ToString
End Function Dabei wird > lediglich aus Symmetriegründen maskiert. Minimal und dennoch sicher ist deshalb diese Variante:
Function HtmlSpecialChars(ByVal s As String) As String
Dim sb As New System.Text.StringBuilder(s)
Return sb.Replace("&", "&").Replace("<", "<").Replace("""", """).Replace("'", "'").ToString
End Function HttpUtility.HtmlAttributeEncode maskiert ausschließlich die Zeichen ", & und <. Das ist genau dann hinreichend, wenn " als Begrenzer von Attributwerten verwendet wird. Dafür gibt es aber selten eine Garantie, und deshalb halte ich auch diese Funktion für unbrauchbar.