Handlebars 是一个流行的模板引擎,用于生成 HTML 内容。它允许开发者定义模板,并通过数据上下文来渲染这些模板。然而,有时我们需要防止 Handlebars 解析某些 HTML 标记或字符,以避免安全问题(如 XSS 攻击)或特定的业务逻辑需求。
Handlebars 默认的安全机制是为了防止 XSS 攻击,它会自动转义所有 HTML 内容。
{{{ }}}
三重花括号:
Handlebars 提供了三重花括号语法 {{{ }}}
,用于输出未转义的 HTML 内容。{{{ }}}
三重花括号:
Handlebars 提供了三重花括号语法 {{{ }}}
,用于输出未转义的 HTML 内容。content
中的 HTML 标记将不会被转义。// 注册自定义助手
Handlebars.registerHelper('safeHtml', function(html) {
return new Handlebars.SafeString(html);
});
// 模板
const template = `
<div>
{{#if isSafe}}
{{{ content }}}
{{else}}
{{ safeHtml content }}
{{/if}}
</div>
`;
// 数据上下文
const data = {
content: '<strong>This is bold</strong>',
isSafe: false
};
// 编译模板并渲染
const compiledTemplate = Handlebars.compile(template);
const result = compiledTemplate(data);
console.log(result);
通过上述方法,你可以有效地阻止 Handlebars 解析某些 HTML 标记或字符,从而提高应用的安全性和灵活性。
领取专属 10元无门槛券
手把手带您无忧上云