【问题标题】:Dangerous query string, yet it has not changed?危险的查询字符串,但它没有改变?
【发布时间】:2014-06-11 23:02:28
【问题描述】:

对某些代码进行简单更改时遇到问题 - 错误表明查询字符串可能很危险。查询字符串保持不变,我所更改的只是查询字符串调用的模式背后的代码

更改前的代码(有效):

protected void Page_Load(object sender, EventArgs e)
    {
        Check();

        if (!Page.IsPostBack)
        {
            //Bunch of methods
        }

        Set();
    }

之后(不工作):

 protected void Page_Load(object sender, EventArgs e)
    {
        Check();

        if (!Page.IsPostBack)
        {
            if (UserInfo.Promotion != string.Empty && Request.QueryString["modal"].ToString() == "changeplan")
            {
                SetPageContentWithPromotion();
            }
            else
            {
                //Bunch of method
            }
        }

        Set();
    }
}

private void SetPageContentWithPromotion()
    {
        //bunch of logic to set up page
    }

我设置了断点,它们甚至没有被击中。该页面仅显示一个错误,并且从未触及模式背后的代码。我被难住了

【问题讨论】:

  • 页面只是显示错误愿意分享吗?
  • @Steve 从客户端检测到有潜在危险的 Request.QueryString 值。我觉得很奇怪,因为我只更改了模态代码背后的 page_load 事件中的逻辑
  • 在调试中,你能看到危险值是什么吗?由于您没有发布完整的代码,因此很难想象什么是危险的......
  • 请向我们展示整个错误消息,而不仅仅是您从中挑选出来的几个字。

标签: c# asp.net webforms query-string code-behind


【解决方案1】:

将此行添加到您的 web.config 如果它不存在:

 <system.web>
   <httpRuntime requestValidationMode="2.0" />
 </system.web>

然后在那个特定的 aspx 页面上,在你的页面标签中设置这个属性,如下所示:

<%@ Page ValidateRequest="false"

但是这有损您页面的安全性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多