为什么我使用Request.Url.PathAndQuery得到这个错误?

问题描述:

由于我的讲师要求在开发我的高级项目时使用AntiXss库,因为网络资源不足,我面临使用这个库的许多困难。我的项目的一部分,我有一个上传文件功能,用户可以上传文件,上传他的文件后,他将被重定向到同一页面以查看其他信息。一切工作正常,但是当我加入AntiXss库,只有下面的行使用它,我得到这个错误为什么我使用Request.Url.PathAndQuery得到这个错误?

(HTTP 400错误 - 错误的请求)

,我不知道为什么。 有谁能告诉我为什么我得到这个错误?以及如何解决它?

C#代码:

Response.Redirect(Encoder.HtmlFormUrlEncode(Request.Url.PathAndQuery)); 
+0

如果您希望将用户重新发送到上一页,为什么需要使用PAthandQuery? – Sakthivel 2013-03-23 05:43:50

打破你的代码,看看每一个步骤:

  • 采取传入的请求的URL,并提取出的路径和查询。
  • 运行,通过基于表单编码器
  • 重定向到该字符串

你认为基于表单的编码器将为了防止XSS攻击呢?

试试这个:

Response.Write(Encoder.HtmlFormUrlEncode("http://www.*.com")); 

什么写出来的?尝试把它放在网络浏览器中,你可能会得到400(或502)的错误。

Request.Url.PathAndQuery

The above syntax returns `/Cambia3/Temp/Test.aspx?query=arg` 

如需进一步URL引用检查this

HtmlFormUrlEncode得到的字符串和编码作为参数。有关更多信息,请参阅here