【问题标题】:Error : potentially dangerous Request. how can able to allow the url containing a (&)错误:有潜在危险的请求。如何能够允许包含 (&) 的 url
【发布时间】:2013-04-17 05:55:34
【问题描述】:

这是我的网址-

http://localhost:4566/PropertyMap/project/ackruti-gardenia-dahisar-&-beyond-mumbai

我得到了错误-

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: System.Web.HttpException:检测到来自客户端 (&) 的潜在危险 Request.Path 值。

堆栈跟踪:

[HttpException (0x80004005): 检测到来自客户端 (&) 的潜在危险 Request.Path 值。]
   System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9673044
   System.Web.ValidateRequestExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +35
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

我该如何解决?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

& 符号 (&) 在 URL 中具有特殊含义,用于分隔 Query StringFragment 部分中的元素。默认情况下禁止这种用法,因为黑客通常会像这样进行探测,试图发现漏洞。

为避免这种情况,您需要在路径上使用 URL 编码,因此 & 符号被编码为 %26,从而形成最终 URL:

http://localhost:4566/PropertyMap/project/ackruti-gardenia-dahisar-%26-beyond-mumbai

由于您没有指定 URL 的构建位置,因此我无法帮助您正确编码 - 每种语言的实现方式不同。

【讨论】:

  • 不是我不同意你的观点,但 query 不会真正开始问号? 之后开始吗?如果和号出现在问号之前,它仍然表示查询字符串吗?例如:new Uri(@"http://localhost:4566/PropertyMap/project/ackruti-gardenia-dahisar-&-beyond-mumbai").Query 为空白,但LocalPath 仍显示完整路径。 (报告的异常可能是请求验证作为安全措施的运作方式)只有当您在其中输入问号时,它才会开始分离内容。
  • 你说得对,我今天工作太努力了——修正了我的答案。
【解决方案2】:

使用HttpUtility.UrlEncode() 方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多