【问题标题】:how to resolve xss vulnerability for javascript code如何解决javascript代码的xss漏洞
【发布时间】:2017-05-25 08:13:34
【问题描述】:

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

方法 lambda() 将未经验证的数据发送到以下行的 Web 浏览器: 我很困惑如何管理。

.html("$ " + formatMoney($("#financial_sales_price").val() - total_subtotals_val));

谁能帮助解决这个漏洞。

【问题讨论】:

  • 除非您要附加的字符串中确实有 HTML 元素,否则请改用 text()
  • 不太清楚,请你更清楚@RoryMcCrossan
  • 看看我放在下面的代码
  • @lancer 将 .html 更改为 .text

标签: javascript c# jquery asp.net jscript


【解决方案1】:

您应该使用.text() 而不是.html()

它更慢,但更安全 - 任何可能的 html 数据都将显示为 entifies,而不是作为 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>

【讨论】:

    【解决方案2】:

    1.解析为数字

            .html("$ " + 
        formatMoney(
        parseFloat($("#financial_sales_price").val())
         - parseFloat(total_subtotals_val)
    ));
    

    2.使用xss-filters模块

    https://www.npmjs.com/package/xss-filters

    【讨论】:

      最近更新 更多