删除加载页面后执行的脚本

时间:2019-05-21 05:38:27

标签: javascript

有一个带有主题墙的网站。任何人都可以写任何东西。但是任何人都可以编写JS脚本,并且此脚本将在加载该网站后执行。

类似onDestroyView

我还编写了脚本,该脚本在document.body.innerHTML = "";中找到带有主题的每个脚本,并将其重写为空字符串,但是它不起作用。

如果我在站点上(在控制台中)使用主题(在执行之前)测试了此脚本,它会找到脚本并对其进行重写,但是将脚本发布到此网站后,它将无法正常工作。脚本最终将被执行。

在获得IT技术帮助之前,我可以修复它吗?

1 个答案:

答案 0 :(得分:1)

一种解决方案是将用户内容添加为文本节点。内容将完全按照用户键入的内容显示。但是,如果您尝试添加格式(粗体,斜体等),则此方法将无效。

const userContent = "<myScript>alert('here')</myScript>"

const userContentNode = document.createTextNode(userContent)

document.body.appendChild(userContentNode)
<body>
</body>

我不得不使用<myScript>而不是<script>,因为看起来Stackoverflow会对代码片段进行某种反XSS的处理。