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

Dragon插入JSON至隐藏字段引发ASP.NET WebForms类型转换错误求解决

解决Dragon干扰ASP.NET WebForms应用的思路

前端层面防护

  • 给存储整数的隐藏字段加上readonly属性,从源头限制外部脚本篡改;同时监听字段的change事件,一旦检测到值被改为非整数的JSON内容,立刻恢复原始合法值。
  • 表单提交前强制校验:在提交逻辑里加一层判断,检查隐藏字段值是否为有效整数,若不符合就阻止提交,给用户提示“字段值异常,请刷新页面重试”,避免无效请求发到后端。

后端容错与校验加固

  • 放弃依赖ASP.NET自动类型转换,后端接收参数时先按字符串处理,显式做整数转换校验:
    string hiddenValue = Request.Form["TargetHiddenField"];
    if (!int.TryParse(hiddenValue, out int validInt))
    {
        ModelState.AddModelError("TargetHiddenField", "请求参数无效,请重新操作");
        return View(); // 或者返回错误页面
    }
    // 使用validInt执行后续业务逻辑
    
  • 添加全局异常捕获,针对“varchar转int失败”这类异常,直接返回友好提示,同时在日志里记录用户的UA信息,确认是否存在Dragon相关标识,辅助排查。

用户端操作指引

  • 指导用户彻底排查Dragon组件:除了禁用Chrome扩展,还要检查任务管理器里是否有Dragon相关后台进程,全部关闭后重启浏览器再测试。
  • 建议用Chrome隐身模式访问应用,隐身模式默认不加载扩展,能快速验证是否还有干扰。
  • 让用户暂时禁用所有非必要浏览器扩展,逐个恢复排查,确认是否是Dragon残留或其他插件的联动问题。

字段逻辑优化

  • 临时修改隐藏字段的命名(比如从UserId改成App_Internal_UserId),避开Dragon可能识别的字段命名规则,减少被篡改的概率。
  • 把关键整数字段迁移到后端Session存储,前端只传递一个加密的会话标识,后端通过标识从Session中取真实值,彻底切断前端字段被篡改的路径。

内容的提问来源于stack exchange,提问作者Wallace B. McClure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:03:36