【问题标题】:Handling Potentially Dangerous Query String处理潜在危险的查询字符串
【发布时间】:2011-07-18 06:20:18
【问题描述】:

我的项目实现了搜索(从默认的HTML 页面)并将重定向到搜索页面(ASPX 页面),我正在使用查询字符串来传递搜索值。当语言设置为非英语(例如泰语、西里尔语)时,我收到potentially dangerous Request.QueryString value 服务器错误。

有没有办法从客户端处理这个问题?目前我找不到从页面本身处理此问题的方法(Page_LoadPage_PreInit 未触发)。

这是我用于重定向的代码:

function Search()  {
    var searchString = document.getElementById('txtSearch').value;
    location.href = "/Search.aspx?search=" + searchString;
}

【问题讨论】:

  • 您是否尝试过加密您的查询字符串并在重定向页面上解密?
  • 还没有,我在搜索页面中发布了重定向代码。

标签: c# javascript asp.net .net-2.0 request.querystring


【解决方案1】:

validateRequest="false" 添加到您的.Net 页面或Web.config 文件

您可以对您的 url 变量进行编码,添加 encodeURIComponent:

function Search()  {
    var searchString = document.getElementById('txtSearch').value;
    location.href = "/Search.aspx?search=" + encodeURIComponent(searchString);
}

【讨论】:

    【解决方案2】:

    如果您的数据看起来大致类似于代码,您可能必须禁用此验证;但是您需要真正确定您的代码处理,特别是避免 XSS 和 SQL 注入攻击。您应该可以在 aspx validateRequest=false 中设置以按页面禁用:

    <%@ Page validateRequest="false" ...
    

    如果您在任何地方都需要,也可以在 web.config 中全局使用。

    【讨论】:

    • 谢谢,我尝试了该属性并且它正在工作。是否可以从代码隐藏中设置为真?假设我已经验证了请求并且它是有效的,我不想将 ValidateRequest 设置为 true,以避免任何攻击。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多