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

如何修复Checkmarx检测到的客户端动态文件包含漏洞?

修复Checkmarx检测出的客户端动态文件包含漏洞方案

Checkmarx警告信息

The application loads an external library or source code file using append, at line 69 of data\hr\request.html. An attacker might be able to exploit this and cause the application to load arbitrary code. Similarity ID: 456454008
翻译:应用程序在data\hr\request.html的第69行使用append加载外部库或源代码文件。攻击者可能会利用这一点,导致应用程序加载任意代码。相似性ID:456454008

相关代码片段

function save() {
  var subject = decodeURI(encodeURI(document.getElementById("subject").value));
  try {
    var form_data = new FormData(); 
    form_data.append("file", file_data)
    form_data.append("type_", type_) 
    form_data.append("subject", subject) 
  }
}

用户问题与背景信息

问题

  • 如何缓解Checkmarx检测出的客户端动态文件包含漏洞?
  • 仅净化DOM对象是否足够?
  • 已尝试使用DOMPurify,期望修改后能通过Checkmarx扫描。

补充信息

  • Checkmarx版本:V 9.5.4.1000 HF7
  • 攻击向量:输入值 > 编码 > 解码 > Subject > Append > FormData

漏洞缓解方案

  1. 先明确触发警告的核心原因
    Checkmarx触发警告,是因为subject经过无意义的encodeURI+decodeURI操作后,被直接通过append加入FormData。旧版Checkmarx对append操作有泛化风险检测,判定可控数据进入了可能加载外部资源的流程(即便这里是FormData提交)。

  2. 仅净化DOM对象不足以解决问题
    DOMPurify的作用是清理HTML/XML内容、防范XSS,而当前Checkmarx检测的是动态文件包含风险,核心关注点是数据流向的可控性,DOM净化对这个检测触发点无效,因为工具不关注DOM渲染风险,而是数据进入append环节的不确定性。

  3. 针对性修复步骤

    • 移除冗余编解码操作:decodeURI(encodeURI(...))完全是无效操作,直接获取输入值即可,减少数据处理环节的风险:
      var subject = document.getElementById("subject").value.trim();
      
    • 添加严格输入校验:对subject做格式、内容校验,拒绝不符合业务规则的输入,示例:
      // 限定为中英文、数字和常用标点,可根据实际业务调整规则
      const validPattern = /^[\u4e00-\u9fa5a-zA-Z0-9,。,!?'"()\s]+$/;
      if (!validPattern.test(subject)) {
        alert("标题格式不符合要求");
        return;
      }
      // 限定长度,比如最多200字符
      if (subject.length > 200) {
        alert("标题长度不能超过200字符");
        return;
      }
      
    • 后端二次校验(必须):前端校验仅做初步拦截,后端要对subject再做相同规则的校验,彻底阻断恶意数据。
    • 标记误报(可选):如果确认该场景无实际风险(比如FormData仅提交到信任后端,且后端有完整校验),可在Checkmarx中将该漏洞标记为误报,或调整对应规则的检测阈值,但优先做代码修复。
  4. DOMPurify的正确使用场景
    如果subject后续会被渲染到页面中,DOMPurify是必要的,但它无法解决当前Checkmarx检测的动态文件包含风险,需要和输入校验配合使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:50:09