有一个带有主题墙的网站。任何人都可以写任何东西。但是任何人都可以编写JS脚本,并且此脚本将在加载该网站后执行。
类似onDestroyView
。
我还编写了脚本,该脚本在document.body.innerHTML = "";
中找到带有主题的每个脚本,并将其重写为空字符串,但是它不起作用。
如果我在站点上(在控制台中)使用主题(在执行之前)测试了此脚本,它会找到脚本并对其进行重写,但是将脚本发布到此网站后,它将无法正常工作。脚本最终将被执行。
在获得IT技术帮助之前,我可以修复它吗?
答案 0 :(得分:1)
一种解决方案是将用户内容添加为文本节点。内容将完全按照用户键入的内容显示。但是,如果您尝试添加格式(粗体,斜体等),则此方法将无效。
const userContent = "<myScript>alert('here')</myScript>"
const userContentNode = document.createTextNode(userContent)
document.body.appendChild(userContentNode)
<body>
</body>
我不得不使用<myScript>
而不是<script>
,因为看起来Stackoverflow会对代码片段进行某种反XSS的处理。