$("#id").append(dataHtml);
当注入<script>alert('test)</script>
时,屏幕上会出现一个警告框,显示test.I编码html,但后来显示为纯文本。
我从数据库中获取dataHtml的值。由于某些原因,我必须使用javascript / jquery在客户端执行此操作。
如何在维护html时忽略这些标签/注入?
答案 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格式运行。