$("#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/)的在线工具。

08-28 17:44