javascript - jquery - 如何转义 html 以防止 XSS?

标签 javascript jquery html ajax

我正在使用 laravel,当用户发送短信时,它可能包含一些恶意代码。当我使用 {{}} 时,它会显示用户发送的确切文本。如果他已经发送了

<script>alert("malicious")</script>

它会显示完全相同并且很好,但是当我使用 jquery ajax 时,我将获取的数据放入一些 html 标签中的一些变量,最后将它们全部附加到主标签,如下所示:

   data = '';
    //loop starts here // some otger codes deleted for cleanness
    data += "<h2>"+response.name+"</h2>";
    data += "<p>"+response.description+"</p>";
    $('#mydata').html(data);

现在的问题是,如果我使用 html(),用户恶意代码将被执行,如果我不这样做,结果将不会显示为 html。

我想我应该用 $.parseHTML 做点什么,不是吗?

谢谢

最佳答案

你应该使用 jQuery text()对数据进行编码。

$('#mydata').text(data);

编辑:要创建您可以使用的#mydata 的内容

$('#mydata')
  .html("")
  .append($("<h2></h2>").text(response.name))
  .append($("<p></p>").text(response.description))

关于javascript - jquery - 如何转义 html 以防止 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47219741/

相关文章:

javascript - 如何存储对刚刚插入的 div 的引用

javascript - 汉堡按钮后的菜单项离汉堡太近了

html - 仅显示第二个表格行的省略号

javascript - 如何使用 fetch 处理流数据?

php - 如何在 Javascript 中编写 PHP 以便加载文件?

javascript - 如果数组在对象中并且对象在下一个数组中,如何在数组中的对象中获取值?

javascript - 将 AngularJS 数组显示为 'human' 可读字符串

表单提交时未正确调用 jquery 函数

jquery - Bootstrap 下拉菜单在单击选择框时关闭

jquery - 在视觉上禁用一个复选框,但允许它仍然提交它的值