2016-03-18 85 views
1

是否有任何方法來設置手柄轉義的某種設置,因此它省略了特定的標籤? 或者如果有任何一套助手可以做到這一點?Handlebarsjs「智能」逃生

例如如果我允許模板中的鏈接,它會執行以下操作。

InputSting = 「一些< \ A HREF = 'http://link '>出</A> < \腳本>警報(' THERE')</SCRIPT>」

模板

{{InputString}}

編譯成類似:

一些out < \ SCRIPT>警報( '有')</SCRIPT>

漠視反斜槓,用來保存標籤。

回答

1

我與這個小提琴一試: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); 
}); 
+0

感謝克里斯託弗,而第一個解決方案是不可行的,因爲我懷疑有人誰將會嘗試XSS會有關轉義照顧。但第二條建議讓我[重讀文檔](http://handlebarsjs.com/#html-escaping)具有非常接近我需要的實現的示例。 – dmi3y