javascript - Handlebarsjs "smart"转义

标签 javascript escaping handlebars.js xss

是否有任何方法可以为 Handlebars 转义设置某种设置,以便省略特定标签? 或者是否有任何一组助手可以做到这一点?

例如如果我允许模板中的链接,它将执行以下操作。

InputSting = "some <\a href='http://link'>out</a> <\script>alert('THERE')</script>"

模板

{{InputString}}

编译为如下内容:

some out <\script>alert('THERE')</script>

忽略反斜杠,用于保留标签。

最佳答案

我尝试了这个 fiddle :https://jsfiddle.net/ChristopheThiry/m4fgsxof/

首先,在 InputString 中,您需要以不同的方式进行转义,否则 javascript 会检测到您的脚本标记并在错误的位置关闭该标记:

\<script>alert('THERE')\<\/script>

其次,您可以使用助手在输入字符串上转换 Handlebars.SafeString

在您的模板中:

{{#link InputString}}
{{/link}}

和助手声明:

Handlebars.registerHelper('link', function(text) {
  return new Handlebars.SafeString(text);
});

关于javascript - Handlebarsjs "smart"转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36074124/

相关文章:

javascript - Facebook OG 没有获取 Nodejs - Handlebars 数据?

javascript - 是否可以将 Handlebars 表达式值传递给子表达式?

javascript - node.js 在异步请求中缺少发布数据

javascript - 动态显示 Accordion ,单击时第一个 Accordion 打开和关闭前一个 Accordion

javascript - Thinkster 教程上的 AngularJS

javascript - 上传站点文件,index.html 或 home.html

Java字符转义

php - 修改此正则表达式 : {([^\]]*)} to accept\]

android - 如何在android中将字符 `\n`替换为新行

html - 如何在带有 Handlebars 的表单中插入 SQL 复选框?