如何使用 ESAPI 解析 JavaScript DOM XSS
How to use ESAPI to resolve JavaScript DOM XSS?
我们正在使用 HP fortify Audit Workbench 3.80 来评估应用程序中的漏洞。 Fortify将以下ExtJs JavaScript代码标记为严重("最差")DOM XSS漏洞:
function doAjaxCall(param1, param2, div) {
var options = {
url : url,
params : {
param1 : param1,
param2 : param2
},
method: 'GET',
success: function(response, options) {
processResponse(response, div);
},
failure: function(response, options) {
doSomethingElse();
}
};
Ext.Ajax.request(options);
}
function processResponse(response, div) {
// SECURITY ISSUE HERE
document.getElementById(div).innerHTML = '<br>' +
'An error occurred with status code '
+ response.status +
'<br><br>';
}
response
是从 AJAX 请求返回的响应。
强化 说:
方法"processResponse"将未经验证的数据发送到第 100 行的 Web 浏览器,这可能导致浏览器执行恶意代码。
我理解这个问题以及为什么它是一个问题。 我不知道的是如何使用 ESAPI 清理输入。 我们成功地使用 ESAPI 解决了 Java 代码中的问题,但我不确定能否在 JavaScript 中解决这个特定问题。
ESAPI4JS,我确实找到了这个JavaScript ESAPI库,但我在一个极高的安全环境中工作,我无法访问这个库。
如何使用 ESAPI 清理响应?
编辑
为每个用户请求添加了完整的 ajax 请求代码。
易受攻击:
document.write("Site is at: " + document.location + ".");
不易受攻击: org.owasp.esapi.ESAPI.initialize(); document.write($ESAPI.encoder().encodeForHTML("Site is at: "+document.location));
您需要在使用前对其进行初始化。在owasp的网站上有文档。
@GeorgeStocker错了。基于 dom 的 xss 通常是最危险的,因为它无法在服务器端处理。一个完美的例子是上面的,可以通过在某些代码之前使用 # 轻松利用它。
此外,大多数客户端 xss 筛选器都可以通过使用 onerror 来绕过。
EY3
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- JS应用程序中基于DOM的XSS保护
- 如何执行简单的基于 DOM 的 XSS 攻击
- 尝试创建一个基于DOM的XSS示例
- 如何使用 ESAPI 解析 JavaScript DOM XSS
- 基于 DOM 的 XSS 在哪里
- 基于DOM的XSS攻击在现代浏览器中仍然可能吗
- 这是否容易受到基于dom的xss的攻击?
- 我如何使用这个dom xss
- 基于 DOM 的 XSS 攻击和 InnerHTML
- 检测DOM XSS攻击