4

我有一个 ASP.NET WebForms 应用程序。我正在根据我的数据库中的内容设置页面的标题。

因为此内容是由用户输入的,所以它可以包含任何字符,包括可以解释为 HTML 标记的字符。因此,我在设置标题之前对这个内容进行了 HTML 编码。

但我看到这会通过产生过度编码的结果而导致问题:

<title>Hoigaard&amp;#39;s Nordic Walking Tuesdays</title>

安全编码用于设置标题标签的文本的正确方法是什么?

4

2 回答 2

3

我对此进行了测试,似乎设置Page.Title 已经执行了编码。因此,您的额外编码会导致双重编码结果。直接设置就好了Page.Title

Page.Title = "Test & Testing";

结果:

<title>Test &amp; Testing</title>
于 2012-08-22T15:18:06.650 回答
0

使用一些类似于 PHP 函数的函数htmlspecialchars()

<%
' Copyright (c) 2009, reusablecode.blogspot.com; some rights reserved.
' This work is licensed under the Creative Commons Attribution License.

' Convert special characters to HTML entities.
function htmlspecialchars(someString)
    ' Critical that ampersand is converted first, since all entities contain them.
    htmlspecialchars = replace(replace(replace(replace(someString, "&", "&amp;"), ">", "&gt;"), "<", "&lt;"), """", "&quot;")
end function
%>

来源:http ://snipplr.com/view/12207/htmlspecialchars/

于 2012-08-22T15:16:40.977 回答