javascript - 在维护 HTML 的同时避免 JavaScript 注入(inject)?

标签 javascript jquery code-injection

 $("#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/

相关文章:

javascript - JSON 提取的数据返回次数过多

javascript - 当内容出现时显示固定标题

jquery - 是否可以通过数据属性过滤 jQuery DataTable?

javascript - 即 10 : SCRIPT5: Access is Denied error on anchor click event

php - 有什么方法可以阻止人们上传带有注入(inject)的 GIF 动图?

javascript - 如何间接使用ContentScripts中网页定义的函数?

javascript - setTimeout 函数完全卡住任何输出?

javascript - 在jquery中的ul中放置一个事件点击特定项目

javascript - 检索浏览器中所选文本的 xpath

javascript - 使用executeScript的代码注入(inject)永远不会在Chrome扩展中调用回调