加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 禁用ASP.NET-MVC3中的unicode字符编码

发布时间:2020-12-16 06:23:02 所属栏目:asp.Net 来源:网络整理
导读:在我的网站上,每个文本都作为UTF-8提供. 由于现在每个浏览器都支持unicode字符,我想按原样使用它们. 通过使用数字字符引用替换任何unicode非常有用,例如#225;.供参考检查:http://en.wikipedia.org/wiki/Unicode_and_HTML#HTML_document_characters 当然,这
在我的网站上,每个文本都作为UTF-8提供.

由于现在每个浏览器都支持unicode字符,我想按原样使用它们.

通过使用数字字符引用替换任何unicode非常有用,例如á.供参考检查:http://en.wikipedia.org/wiki/Unicode_and_HTML#HTML_document_characters

当然,这样网页可以在最古老的网景中正确呈现,但是例如谷歌分析电子商务模块在理解这些特殊编码字符方面有些麻烦.

有没有办法全局禁用数字字符参考编码?

例如,我想用剃须刀写:

<span class="title">@ViewBag.Title</span>

我想要在输出上显示:

<span class="title">Számítástechnika</span>

不是这个:

<span class="title">Sz&#225;m&#237;t&#225;stechnika</span>

我不是要禁用html编码,所以Html.Raw不是一个解决方案,例如我无法确保@ViewBag.Title不会满足这样的内容:

<span class="title"><script>alert('injected hahahah');</script></span>

所以我满足于特殊html字符的自动编码.这不是我想禁用的.

我不想重构所有的代码,我认为应该有一个“全局切换”来禁用在剃刀中使用字符串参数的这种行为.有没有办法做到这一点?

我也可以明确禁止数字字符引用,例如新的MvcHtmlString(myString,一些参数)吗?

解决方法

我担心您无法关闭此编码功能.这个“漂亮”功能由 WebUtility.HtmlEncode提供,您无法影响编码.

但是,在启动.net 4.0时,您可以自定义编码行为,创建一个继承自HttpEncoder的类并在web.cofig HttpRuntimeSection.EncoderType中对其进行配置.但是您需要实现自己的自定义编码逻辑.

幸运的是.net 4.5附带了一个新的HttpEncoder来编码坏的东西(比如< script>)然而正确处理称为AntiXssEncoder的Unicode字符

所以你只需要在web.config中添加它:

<system.web>
    <httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>    
</system.web>

如果您尚未使用.net 4.5,可以在以下帮助下实现AntiXssEncoder
Microsoft Web Protection Library

这是一篇如何设置它的文章:Using AntiXss As The Default Encoder For ASP.NET(虽然它可能已经过时)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读