jQuery技术:在jQuery html()中防止XSS

我使用ajax从数据库接收数据,然后使用.html()jQuery函数将其与HTML代码一起添加到网站,如下所示:

$.ajax({ url: "getDatabaseData.php", type: "post", dataType: "json", success: function(response){ $("#message-div").html(getMessagesHtml(response)); } }); function getMessagesHtml(messages){ var result = ""; for(var i = 0; i < messages.length; i++){ result += "
" + "

Name: " + messages[i].name + "

" + "

Message: " + messages[i].message + "

" + "
"; } return result; }

以下是getDatabaseData.php,它从数据库获取并返回数据:

 $messages = $CFG_DB->select("SELECT name, message FROM messages"); echo json_encode($messages); 

想象一下,例如,如果消息包含以下文本:

 XSS Attack code goes here 

我的问题是:

我想在这种情况下使用text()而不是html()不是一个选项,因为我还添加了html代码。

没有javascript,当使用PHP打印数据时,我只是对从数据库接收的变量使用htmlentities来阻止XSS,例如htmlentities(messages [i] .name)和htmlentities(messages [i] .message)。 但我没有看到任何类似的JavaScript。

    使用用户输入设置文本是最安全的方法。 而不是创建html字符串,而是创建元素

    就像是:

     function getMessagesHtml(messages){ return messages.map(function(o){ var $div = $('
    '); $div.append($('

    ', {text: "Name: " + o.name})); $div.append($('

    ', {text: "Message: " + o.message})); return $div; }); }


    根据注释,另一种方法是创建一个清理辅助函数,该函数创建一个元素,将输入字符串作为文本传递给元素并返回该文本

     function text(str){ return $('
    ',{text:str}).text(); }

      以上就是jQuery教程分享在jQuery html()中防止XSS相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/532547.html

      (0)
      上一篇 2020年12月21日
      下一篇 2020年12月21日

      精彩推荐