2014-09-26 44 views
1
​​

当注入<script>alert('test)</script>一个警告框出现在屏幕上显示test.I编码的HTML,但然后它显示为纯文本。避免JavaScript注入,同时保持HTML?

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

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

+0

我正确理解你想排除所有脚本标记吗? – 2014-09-26 08:07:52

+0

是的,我想要任何恶意的东西。 – 2014-09-26 08:08:54

回答

1

你可以只使用一个简单的正则表达式来删除所有脚本标签:

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

一些解释:

  • .*:除换行符的所有字符(*倍)
  • [\s\S]*:换行符

来测试是否前夕rything按预期匹配,您可以使用一个带有dataHtml值示例的在线工具(例如,http://www.regexr.com/)。

0

设置为这样的非文本/ JavaScript的其他东西,即type属性追加脚本元素:

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

这个脚本标签将不能被解析或运行如JavaScript。

+0

它是一种注射剂.. – 2014-09-26 08:13:47