HTML编码是否有任何缺点?

时间:2015-06-12 21:58:29

标签: asp.net-mvc razor encoding utf-8 xss

我在ASP.NET MVC框架上开发了一个项目。所有文件和字符集都是UTF-8。我正在使用模型绑定,在我的一些模型中,display属性包括一些重音字符或单/双引号。

当Razor引擎自动编码助手(即DisplayNameFor)时,重音的字符和引号会被编码。

我可能会尝试使用一些自定义助手来实现渲染而不进行编码,但我想了解HTML编码是否有任何缺点?我正在使用UTF-8编码,我想渲染文本“Öger的旅行”。但是它呈现为“Öger's tours”。我要求这个场景。

(我听说搜索引擎索引在没有编码文本的情况下表现更好。但我不知道为什么。)

谢谢。

2 个答案:

答案 0 :(得分:1)

实体编码的唯一必需字符是<,它启动HTML元素的开始和结束标记,&字符,否则启动HTML实体,并且(在包含的属性中)双引号)"以防止过早终止属性。使用>实体来防止混淆解析器也是一个好主意。

对于其他所有内容,绝对足以指定正确的字符集编码并将其正确应用于HTML文件中。如果HTML文件的字符集支持,则特别不需要用单引号或变音符号,连字符或其他非ASCII字符对'外部属性值进行编码。

答案 1 :(得分:0)

我发现解决方案是使用Razor encoderType的AntiXSS库。这个答案很好地描述了它。 Special characters in html output

默认的Razor编码器对重音字符进行编码,而AntiXSS库不对它们进行编码。因此,重音字符按原样呈现。