asp.net – HttpUtility.HtmlEncode逃避太多了?
发布时间:2020-05-24 15:00:16 所属栏目:asp.Net 来源:互联网
导读:在我们的MVC3 ASP.net项目中,HttpUtility. HtmlEncode方法似乎逃避了太多的字符.我们的网页作为UTF-8页面提供,但该方法仍然可以转换字符,如ü或日元字符,即使这些字符是 UTF-8 set的一部分. 所以当我的asp.net MVC视图包含以下代码时: @(strongümlaut/stron
|
在我们的MVC3 ASP.net项目中,HttpUtility. HtmlEncode方法似乎逃避了太多的字符.我们的网页作为UTF-8页面提供,但该方法仍然可以转换字符,如ü或日元字符,即使这些字符是 UTF-8 set的一部分. 所以当我的asp.net MVC视图包含以下代码时: @("<strong>ümlaut</strong>")
然后我希望Encoder能够逃避html标签,但不是ümlaut <strong>ümlaut</strong> 但相反,它给了我以下HTML: <strong>ümlaut</strong> 为了完整起见,我还提到web.config中的responseEncoding明确地设置为utf-8,所以我希望HtmlEncode方法能够遵循这个设置. <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 解决方法是的,我的网页面临同样的问题.如果我们看到htmlEncode的代码,那么有一个点可以翻译这组字符.这是这种字符也翻译的代码. if ((ch >= 'x00a0') && (ch < 'A'))
{
output.Write("&#");
output.Write(ch.ToString(NumberFormatInfo.InvariantInfo));
output.Write(';');
}
else
{
output.Write(ch);
}
这是HtmlEncode的代码 public static unsafe void HtmlEncode(string value,TextWriter output)
{
if (value != null)
{
if (output == null)
{
throw new ArgumentNullException("output");
}
int num = IndexOfHtmlEncodingChars(value,0);
if (num == -1)
{
output.Write(value);
}
else
{
int num2 = value.Length - num;
fixed (char* str = ((char*) value))
{
char* chPtr = str;
char* chPtr2 = chPtr;
while (num-- > 0)
{
output.Write(chPtr2[0]);
chPtr2++;
}
while (num2-- > 0)
{
char ch = chPtr2[0];
if (ch <= '>')
{
switch (ch)
{
case '&':
{
output.Write("&");
chPtr2++;
continue;
}
case ''':
{
output.Write("'");
chPtr2++;
continue;
}
case '"':
{
output.Write(""");
chPtr2++;
continue;
}
case '<':
{
output.Write("<");
chPtr2++;
continue;
}
case '>':
{
output.Write(">");
chPtr2++;
continue;
}
}
output.Write(ch);
chPtr2++;
continue;
}
// !here is the point!
if ((ch >= 'x00a0') && (ch < ''))
{
output.Write("&#");
output.Write(ch.ToString(NumberFormatInfo.InvariantInfo));
output.Write(';');
}
else
{
output.Write(ch);
}
chPtr2++;
}
}
}
}
}
a可能的解决方案是制作自定义HtmlEncode,或使用MS的反跨站点脚本. http://msdn.microsoft.com/en-us/security/aa973814 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 当要复制的lob数据的插入长度超过配置的最大值6
- asp.net-mvc-3 – 将复选框绑定到MVC中的int数组/枚举
- ASP.NET Health Monitoring和ELMAH是否相互替代?
- asp.net – Vs html
- 在ASP.NET MVC中搜索路径
- asp.net – 在序列化“System.Reflection”类型的对象时检测
- asp.net-mvc – 未找到部分视图或视图引擎不支持搜索的位置
- asp.net – 当DataSource中没有数据时,DetailsView不可见
- asp.net – CookieAuthenticationOptions.AuthenticationTy
- asp.net – 在web.config location元素中无法识别InheritIn
推荐文章
站长推荐
- asp.net-mvc-2 – 是asp.net MVC2包括在.net 4.0
- asp.net mvc长时间操作
- asp.net – 使用JQuery从viewstate获取值?
- ASP.NET数据从代码隐藏双向双向绑定
- asp.net-mvc – 如果用户在int字段中放入非数字字
- asp.net-mvc – ViewModel中的ASP.NET MVC Selec
- 如何在Asp.Net 4.0 / IIS7中支持压缩的HTTP请求?
- asp.net – 通过Web服务访问连接字符串
- asp.net-mvc – Razor MVC4 Url.Action无效
- ASP.NET MVC 5(VS2013 final):使用OWIN进行Face
热点阅读
