如何解决 JavaScript 代码的 XSS 漏洞



我在网站上完成的安全扫描后收到以下响应,工具显示以下内容:

方法 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('&lt;a href="example.html"&gt;Link&lt;/a&gt;');
      $("#div4").text('&lt;a href="example.html"&gt;Link&lt;/a&gt;');
 });
<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

最新更新