$("#id").append(dataHtml);
当用
<script>alert('test)</script>
注入时,一个警告框出现在显示test的屏幕上。我对html进行了编码,但随后显示为纯文本。我从数据库中获得了dataHtml的值。由于某些原因,我必须使用javascript / jquery在客户端进行全部操作。
在维护html时如何忽略此类标记/注入?
最佳答案
您可以只使用一个简单的正则表达式删除所有脚本标签:
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解释:
.*
:除换行符外的所有字符(*次)[\s\S]*
:换行符要测试所有内容是否均符合预期,可以使用带有dataHtml值示例(例如http://www.regexr.com/)的在线工具。