【发布时间】:2009-03-04 16:54:00
【问题描述】:
我在 ASP.NET MVC 应用程序中有一个文本区域,用户可以在其中键入一些文本。当我向用户显示文本时,我使用Html.Encode 来防止恶意输入。问题是用户可以输入西班牙语,也许他输入了año,而Encode 将其转换为a&#241o。我怎样才能防止这种情况发生?
编辑:在生成的 HTML 中,我看到了这个:
<a href="a1-'a1'-Cama&#241;o?sort=estadisticas#241;o">a1 'a1' Cama&#241;o</a>
页面后面我有这个,这次显示是正确的:
<b>a1 'a1' Camaño</b>
第一个是这样生成的:
<%= Html.RouteLink(Html.Encode(Model.NAME), ...... %>
第二个是这样的:
<%= Html.Encode(Model.NAME)%>
所以我的猜测是问题出在Html.RouteLink。
【问题讨论】:
-
您是否抱怨它正在编码国际字符,或者用户看到的是编码字符而不是他们输入的字符?如果是后者,那么“意外编码两次”的答案是正确的。如果没有,请告诉我们。
标签: html asp.net-mvc security encoding