当注入<script>alert('test)</script>
一个警告框出现在屏幕上显示test.I编码的HTML,但然后它显示为纯文本。避免JavaScript注入,同时保持HTML?
我从数据库中获取dataHtml的值。由于某些原因,我必须在客户端使用javascript/jquery完成所有操作。
如何在维护html时忽略这些标记/注入?
当注入<script>alert('test)</script>
一个警告框出现在屏幕上显示test.I编码的HTML,但然后它显示为纯文本。避免JavaScript注入,同时保持HTML?
我从数据库中获取dataHtml的值。由于某些原因,我必须在客户端使用javascript/jquery完成所有操作。
如何在维护html时忽略这些标记/注入?
你可以只使用一个简单的正则表达式来删除所有脚本标签:
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解释:
.*
:除换行符的所有字符(*倍)[\s\S]*
:换行符来测试是否前夕rything按预期匹配,您可以使用一个带有dataHtml值示例的在线工具(例如,http://www.regexr.com/)。
设置为这样的非文本/ JavaScript的其他东西,即type属性追加脚本元素:
<script type="text/template">alert('test');</script>
这个脚本标签将不能被解析或运行如JavaScript。
它是一种注射剂.. – 2014-09-26 08:13:47
我正确理解你想排除所有脚本标记吗? – 2014-09-26 08:07:52
是的,我想要任何恶意的东西。 – 2014-09-26 08:08:54