2012-03-31 3 views
3

私は/ JavaScriptのテンプレートエンジンを探している、とDoT.jsを選んだ(それは非常にfastだ主な理由)が、ちょうどFreemarkerのと同じように、次の問題ヌル併合(「未定義」安全)とXSSからの保護の両方をサポートするJavaScript HTMLテンプレートがありますか?

  • ヌル安全/未定義安全/ nullで合体を有していましたVTL、私はfoo.bar.foobarを渡すことができ、foo、foo.bar、およびfoo.bar.foobarが定義されていることを確認することを心配しないでください。
    私はおよそ悪い感じ

    {{ var val='';try{ var=foo.bar.foobar }catch(){} }}{{= val}} 
    

    、または

    私は良くも悪くも

  • について感じた場合、私は良いXSS保護をしたいかわからない
    {{= typeof foo !== 'undefined'?typeof foo.bar!=='undefined'?typeof foo.bar.foobar!=='undefined'?foo.bar.foobar:'foo.bar.foobar is undefined':'foo.bar is undefined':'foo is undefined'}} 
    

    のようなものを避けますであり、高速DoT.jsはDOMを使用しないことになります。 }}オペレータ、私は(作者が何かを逃した場合は何等)世界のすべてのXSSは、検索と置換によって処理されることを快適に感じていないよ

    ドキュメント、それは非常に高速ですが、それはまだ(その人気はありませんしかし、ソースは)あなたがちょうどそれらを読むことによって、ほとんどのものを把握することができますので、小さいですが、良いコミュニティを持つことは、JavaScriptのテンプレートライブラリは、これら2つの要求に応答し、まだ速いと考えられている大きなメリット

のですか?

答えて

1

mustache.js - JavaScriptを使用したロジックレス{{口ひげ}}テンプレート。

1) キーが存在し、値がnull、未定義、またはfalseの場合、または空のリストの場合、ブロックはレンダリングされません。

2) すべての変数は、デフォルトでHTMLエスケープされています。エスケープされていないHTMLをレンダリングする場合は、{{{name}}}という三重のひげを使用します。 &を使用して、変数のエスケープ解除を行うこともできます。

参考:2再https://github.com/janl/mustache.js

+1

)、HTMLのエスケープは、まともな最初のステップですが、XSSに対する防ぐことはできません。たとえば、 'javascript:doEvil()'をリンクの 'href 'に挿入することは、このデフォルトでは禁止されません。 –

関連する問題