我有一个 ASP.NET WebForms 应用程序。我正在根据我的数据库中的内容设置页面的标题。
因为此内容是由用户输入的,所以它可以包含任何字符,包括可以解释为 HTML 标记的字符。因此,我在设置标题之前对这个内容进行了 HTML 编码。
但我看到这会通过产生过度编码的结果而导致问题:
<title>Hoigaard&#39;s Nordic Walking Tuesdays</title>
安全编码用于设置标题标签的文本的正确方法是什么?
我对此进行了测试,似乎设置Page.Title
已经执行了编码。因此,您的额外编码会导致双重编码结果。直接设置就好了Page.Title
:
Page.Title = "Test & Testing";
结果:
<title>Test & Testing</title>
使用一些类似于 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, "&", "&"), ">", ">"), "<", "<"), """", """)
end function
%>