Handlebarsjs "smart" 转义
Handlebarsjs "smart" escape
有没有什么方法可以为车把转义设置某种设置,从而省略特定的标签?
或者是否有任何一组助手可以做到这一点?
例如如果我允许模板中的链接,它将执行以下操作。
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);
});
有没有什么方法可以为车把转义设置某种设置,从而省略特定的标签? 或者是否有任何一组助手可以做到这一点?
例如如果我允许模板中的链接,它将执行以下操作。
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);
});