我正在使用 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/