$("#id").append(dataHtml);
当用注射<script>alert('test)</script>
出现显示test.I编码的HTML屏幕上的警告框,但随后表现为纯文本。
我从database.Because的一些原因,我不得不做这一切在使用JavaScript / jQuery的客户端dataHtml的价值。
我怎么忽略这些标签/注射,而维修器材的HTML?
$("#id").append(dataHtml);
当用注射<script>alert('test)</script>
出现显示test.I编码的HTML屏幕上的警告框,但随后表现为纯文本。
我从database.Because的一些原因,我不得不做这一切在使用JavaScript / jQuery的客户端dataHtml的价值。
我怎么忽略这些标签/注射,而维修器材的HTML?
你可以只使用一个简单的正则表达式来删除所有脚本标记:
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解释:
.*
:除换行符的所有字符(*次) [\s\S]*
:换行符 来测试,如果一切如预期,你可以使用在线工具与您的dataHtml值(示例匹配http://www.regexr.com/为例)。
附加与该类型属性设置为文本/ JavaScript的其他东西,即这样的脚本元素:
<script type="text/template">alert('test');</script>
这个脚本标签将不能被解析或运行如JavaScript。