在维护HTML时避免使用javascript注入?

时间:2014-09-26 08:06:11

标签: javascript jquery code-injection

 $("#id").append(dataHtml);

当注入<script>alert('test)</script>时,屏幕上会出现一个警告框,显示test.I编码html,但后来显示为纯文本。

我从数据库中获取dataHtml的值。由于某些原因,我必须使用javascript / jquery在客户端执行此操作。

如何在维护html时忽略这些标签/注入?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的正则表达式删除所有脚本标记:

dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");

一些解释:

  • .*:除了换行符之外的所有字符(*次)
  • [\s\S]*:linebreaks

要测试一切是否符合预期,您可以使用在线工具和dataHtml值的示例(例如http://www.regexr.com/)。

答案 1 :(得分:0)

将type属性设置的脚本元素追加到text / javascript之外的其他内容,例如:

<script type="text/template">alert('test');</script>

此脚本标记不会被解析或以javascript格式运行。