我们正在使用fortify扫描asp.net源代码&它抱怨下面的错误:
dashboard_handler.js中的方法lambda()将未经验证的数据发送到第61行的Web浏览器,这可能导致浏览器执行恶意代码。将未经验证的数据发送到Web浏览器可能导致浏览器执行恶意代码
我们在第61行的代码下面: 工具说第61行的代码将未经验证的数据发送到Web浏览器。
$el = $("<div class='dashboard-column'><i class='fa fa-caret-right'></i> <div class='column-title " + items[bucket][itemsNo - 1][1] + "'><span>" + bucket + "</span><i class='fa fa-caret-right caret-right'></i><i class='fa fa-caret-down'></i></div> </div>");
任何人都可以告诉我如何修复此XSS漏洞吗?
答案 0 :(得分:0)
如果数据来自用户并且未正确清理,则"<div class='column-title " + items[bucket][itemsNo - 1][1] + "'>"
和"<span>" + bucket + "</span>"
都是潜在的XSS攻击媒介,因为攻击者可以只插入他们想要的任何HTML,包括脚本标记。< / p>
您可以重写代码,以便它不会通过连接字符串来构建HTML(这一般来说这不是一个坏主意,不仅仅是从安全角度来看。)
$el = $("<div class='dashboard-column'><i class='fa fa-caret-right'></i></div>");
$div = $("<div class='column-title'>").addClass( items[bucket][itemsNo - 1][1] ).appendTo( $el );
$span = $("<span>").text(bucket).appendTo($div);
$div.append("<i class='fa fa-caret-right caret-right'></i><i class='fa fa-caret-down'></i>");