跨站点脚本:DOM Fortify

Cross Site Scripting: DOM Fortify

目前正在为我的一个应用程序代码解决 DOM XSS,它报告 winT 的 XSS(下面提供了伪代码)。

代码片段:

Var oMyObj = window.dialogArg;
var winT = oMyObj.title;

<span id="header">
 <script>
      document.write(winT);
 </script>
</span>

我已经尝试了几种方法来查看是否有帮助,但到目前为止仍在尝试..我想在这里请求看看是否有任何选项或方法可以帮助修复 fortify XSS。

在上述情况下,我们正在发送静态信息进行打印,因为 page/dialog 框标题和应用程序是 internal/intranet 防火墙后面的应用程序..但想看看是否可以解决它

在搜索和阅读与 XSS 相关的文章后尝试了以下方法:

  1. 将行“document.write”转换为“.textContent”,但它没有打印值本身
document.getElementsbyId("header").textContent = winT
  1. 尝试使用 innerHTML 而不是 document.write 并打印但没有纠正 Fortify - 后来意识到 innerHTML 也有 XSS

  2. 试过如下 htmlencoder -- fortify 仍然报告它有问题。 https://portswigger.net/web-security/cross-site-scripting/preventing

function htmlEncode(str){
  return String(str).replace(/[^\w. ]/gi, function(c){
     return '&#'+c.charCodeAt(0)+';';
  });
}

也许我还没有完全理解是什么导致了 XSS 发生,这进一步导致无法找到解决上述问题的正确方法。

如果您能提供一些见解或指导正确的方向,将会有所帮助。谢谢

我已经使用 ESAPI 解决了上述问题

示例片段:

 var reportName = "<%= ESAPI.encoder().encodeForJavaScript(reportName)%>";