是否有一个JavaScript HTML模板既支持空合并(“未定义”安全)又可以防止XSS?
作者:互联网
我一直在寻找JavaScript模板引擎,并选择了DoT.js(主要是因为它非常适合fast),但是存在以下问题
>空安全/未定义安全/空合并,就像在Freemarker / VTL中一样,我希望能够传递foo.bar.foobar,而不必担心检查foo,foo.bar和foo.bar.foobar是否已定义例如避免像
{{ var val='';try{ var=foo.bar.foobar }catch(){} }}{{= val}}
我对此感到难过,或者
{{= 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'}}
我不确定我是否会感到好还是坏
>我想拥有良好的XSS保护,并且由于DoT.js的快速运行是不使用DOM,即使使用{{! }}运算符,我对世界上所有的XSS都可以通过查找和替换来处理(例如,如果作者遗漏了什么该怎么办)感到不自在
文档虽然很快,但是还不那么流行(但是),但是资源如此之小,您可以通过阅读来了解大部分内容,但是拥有一个良好的社区是一个很大的好处.
哪个JavaScript模板库满足了这两个要求,并且仍被认为是快速的?
解决方法:
https://github.com/mikesamuel/jquery-jquery-tmpl-proposal benchmarks相对于其他模板系统而言很好,并且具有contextual autoescaping可以防止XSS.
您可以从conformance suite中看到它合并了undefined.
标签:template-engine,dot-js,javascript 来源: https://codeday.me/bug/20191201/2081548.html