我为我的页面引入了一串html,除了脚本标签之外,我认为它是html安全的。我知道三重括号会逃避html,省略任何脚本标签的步骤是什么?
示例
var foo = "<h1>Foo</h1><script>some script that might possibly be in here</script><p>bar</p>
然后在我的.hbs中:
{{{foo}}}
我想看到h1和段落但是遗漏了脚本。
提前致谢。
答案 0 :(得分:6)
您有几个选择:
删除脚本标记,然后将其作为上下文传递到Handlebars模板中。
创建一个Handlebars帮助器来代替三重花括号表达式。这样的事情:
Handlebars.registerHelper('strip-scripts', function(context) {
var html = context;
// context variable is the HTML you will pass into the helper
// Strip the script tags from the html, and return it as a Handlebars.SafeString
return new Handlebars.SafeString(html);
});
然后在您的模板中使用它:
{{strip-scripts foo}}
使用帮助程序时不需要使用三重花括号,因为助手已经返回一个SafeString。
帮助程序可能比第一个选项更有用,因为您可以在整个模板中重复使用它。
查看此StackOverflow问题,获取有关如何安全地删除脚本标记的帮助:Removing all script tags from html with JS Regular Expression
如果您使用Node.js在服务器端执行此操作,则可以使用Cheerio而不是jQuery。