$("#id").append(dataHtml);
当注入(inject) <script>alert('test)</script>
时屏幕上出现一个警告框,显示测试。我对 html 进行了编码,但随后它显示为纯文本。
我从数据库获取 dataHtml 的值。由于某些原因,我必须使用 javascript/jquery 在客户端完成这一切。
如何在维护 html 的同时忽略此类标签/注入(inject)?
最佳答案
您可以使用简单的正则表达式来删除所有脚本标签:
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解释:
.*
:除换行符之外的所有字符(*次)[\s\S]*
:换行符
要测试一切是否符合预期,您可以使用带有 dataHtml 值示例的在线工具(例如 http://www.regexr.com/)。
关于javascript - 在维护 HTML 的同时避免 JavaScript 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054877/