为什么ASP.NET 4 / IIS7 html编码我的查询字符串?

时间:2012-01-05 22:15:00

标签: iis-7 xss

我们已将其中一个测试环境切换为在IIS7上使用.NET 4。生产正在使用.NET 2.

某些网址,例如

http://www.example.com/page.aspx?param1=<foo>&param2=<foo>

我们的stringindex代码没有被查找&lt;或者&gt;在Request.Url.ToString()中。为什么?因为我们检查时它们显示为&lt;foo&gt;。这适用于.NET 2.

发生了什么事?

注意:格式化没有错误。我的意思是 HTML 编码。

1 个答案:

答案 0 :(得分:0)

查询字符串中的所有数据都需要进行URL编码才能正确解析,因此如果要获取输入的内容,则需要URL解码查询字符串。

HttpServerUtility.UrlDecode(Request.QueryString);

http://msdn.microsoft.com/en-us/library/6196h3wt.aspx

URL编码可确保所有浏览器都能正确传输URL字符串中的文本。某些浏览器可能会截断或损坏诸如问号(?),符号(&amp;),斜杠标记(/)和空格等字符。因此,这些字符必须编码在标签或查询字符串中,其中字符串可以由浏览器在请求字符串中重新发送。