You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET提交含#字符的ASCX控件值触发请求验证异常求助

解决ASP.NET中含特殊字符的输入触发HttpRequestValidationException异常

当通过ASCX控件传递类似abc#abc这类带特殊字符的值时,ASP.NET会抛出System.Web.HttpRequestValidationException,提示检测到潜在危险的Request.Form值,误将合法输入判定为疑似跨站脚本攻击。以下是几种合法允许这类输入的解决办法:

  • 单个页面/控件级禁用验证
    这是最推荐的方式,只针对需要的页面或控件关闭请求验证:

    • 对于Web Forms页面,在@Page指令中添加属性:
      <%@ Page Language="C#" ValidateRequest="false" %>
      
    • 对于ASCX用户控件,在@Control指令中添加:
      <%@ Control Language="C#" ValidateRequest="false" %>
      
  • 全局配置(谨慎使用)
    如果你的整个应用都需要允许这类特殊字符输入,可以修改web.config,但会降低整体安全性,需确保所有输入都做了额外安全处理:

    <system.web>
      <pages validateRequest="false" />
    </system.web>
    
  • .NET 4.0+版本额外配置
    如果你用的是.NET 4.0及以上版本,仅设置validateRequest="false"可能不生效,需要在web.config的<httpRuntime>节点补充配置:

    <system.web>
      <httpRuntime requestValidationMode="2.0" />
      <pages validateRequest="false" />
    </system.web>
    
  • 局部获取未验证值(更安全)
    不想关闭验证的话,可以直接获取未经过验证的表单值,之后自行做安全校验:

    // 获取指定字段的未验证值
    string hotelSmeValue = Request.Unvalidated.Form["HotelCtrl:_ctl62:_ctl0:XmlsplSummary:_ctl23:_ctl2:HotelSme"];
    // 这里添加自定义安全检查逻辑,比如过滤恶意HTML/脚本
    

内容的提问来源于stack exchange,提问作者Deepak Sundkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:42:35