避免JavaScript注入,同时保持HTML?(avoid javascript injectio

2019-10-21 01:38发布

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

当用注射<script>alert('test)</script>出现显示test.I编码的HTML屏幕上的警告框,但随后表现为纯文本。

我从database.Because的一些原因,我不得不做这一切在使用JavaScript / jQuery的客户端dataHtml的价值。

我怎么忽略这些标签/注射,而维修器材的HTML?

Answer 1:

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

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

一些解释:

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

来测试,如果一切如预期,你可以使用在线工具与您的dataHtml值(示例匹配http://www.regexr.com/为例)。



Answer 2:

附加与该类型属性设置为文本/ JavaScript的其他东西,即这样的脚本元素:

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

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



文章来源: avoid javascript injection while maintaining HTML?