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