我在网站上完成的安全扫描后收到以下响应,工具显示以下内容:
方法 lambda(( 将未经验证的数据发送到 Web 浏览器,如下所示:我很困惑如何管理。
.html("$ " + formatMoney($("#financial_sales_price").val() - total_subtotals_val));
有人可以协助解决此漏洞吗?
你应该使用.text()
而不是.html()
。
它更慢,但更安全 - 任何可能的 HTML 数据都将显示为整体,而不是作为 HTML 触发。 请参阅此处的示例:
$(function(){
$("#div1").html('<a href="example.html">Link</a><b>hello</b>');
$("#div2").text('<a href="example.html">Link</a><b>hello</b>');
$("#div3").html('<a href="example.html">Link</a>');
$("#div4").text('<a href="example.html">Link</a>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1"></div>
<div id="div2"></div>
<hr/>
<div id="div3"></div>
<div id="div4"></div>
<div id="work"></div>
1.解析为数字
.html("$ " +
formatMoney(
parseFloat($("#financial_sales_price").val())
- parseFloat(total_subtotals_val)
));
2.使用XSS过滤器模块
https://www.npmjs.com/package/xss-filters