在维护HTML时避免使用javascript注入?
$("#id").append(dataHtml);
当注入alert('test)
时,屏幕上会出现一个警告框,显示test.I编码html,然后它显示为纯文本。
我从数据库中获取dataHtml的值。由于某些原因,我必须使用javascript / jquery在客户端执行此操作。
在维护html时如何忽略这样的标签/注入?
您可以使用简单的正则表达式删除所有脚本标记:
dataHtml = dataHtml.replace(/[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解释:
-
.*
:除了换行符之外的所有字符(*次) -
[\s\S]*
:换行
要测试一切是否符合预期,您可以使用在线工具和dataHtml值的示例(例如http://www.regexr.com/ )。
将type属性设置的脚本元素附加到text / javascript以外的其他内容,即如下所示:
此脚本标记不会被解析或以javascript身份运行。