跨站点脚本: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 相关的文章后尝试了以下方法:
- 将行“document.write”转换为“.textContent”,但它没有打印值本身
document.getElementsbyId("header").textContent = winT
尝试使用 innerHTML 而不是 document.write 并打印但没有纠正 Fortify - 后来意识到 innerHTML 也有 XSS
试过如下 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)%>";
目前正在为我的一个应用程序代码解决 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 相关的文章后尝试了以下方法:
- 将行“document.write”转换为“.textContent”,但它没有打印值本身
document.getElementsbyId("header").textContent = winT
尝试使用 innerHTML 而不是 document.write 并打印但没有纠正 Fortify - 后来意识到 innerHTML 也有 XSS
试过如下 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)%>";