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

Fortify报DOM-jQuery型XSS漏洞第25行修复方案咨询

漏洞根因说明

Fortify标记此处XSS的核心原因是$("#id-column").val()属于用户可控输入,你直接将该值拼接进jQuery选择器字符串中未做任何校验。若攻击者可篡改该输入值,可构造恶意字符串触发DOM型XSS。

修复思路有效性判断

你提出的校验选择器取值合法性的思路完全正确,可直接落地,补充具体实现方案:

  • 先明确#id-column的合法取值范围:如果业务中该值仅为列序号(正整数),直接做数字格式校验即可,示例代码如下:
} else if($("#id-type").val() == 'D') {
  const colVal = $("#id-column").val();
  // 仅允许正整数输入,非法值直接拦截不执行后续逻辑
  if(!/^\d+$/.test(colVal)) {
    return;
  }
  const $targetCol = $("#column" + colVal);
  $targetCol.attr("src", "/app/includes/images/down.gif");
  $targetCol.attr("width", "10");
  // 注:你原代码第26行存在语法错误,val()返回字符串无法调用attr方法,修正为如下写法
  $targetCol.attr("height", "5");
}
  • 如果业务允许该值包含字母,可限定仅允许大小写字母、数字、下划线三类安全字符,校验正则调整为/^[a-zA-Z0-9_]+$/即可。

误报可能性判断

如果你的业务逻辑中#id-column的取值完全由后端生成、用户端没有任何篡改路径,可判定为误报。但从安全防御的角度,仍建议补充上述校验逻辑,避免后续业务迭代调整输入来源后引入真实风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:02