寻找一种需要XSS保护的流行模板语言

时间:2010-09-25 00:57:20

标签: html templates template-engine

我想尝试一种流行的HTML模板语言,看看我是否可以解决其中的XSS问题。什么是流行的,开源的,模板化的语言,我可以尝试解决。

通过模板化语言,我的意思是用于通过将输出语言中的静态内容与来自其他源的动态数据相结合来生成输出语言的语言。例如。 PHP通常用作HTML / CSS / JS的模板语言,而XSLT是XML的模板语言。

理想的模板语言是

  1. 广泛使用
  2. 开源
  3. 尚未解决XSS
  4. 语法越简单越好
  5. 想法是

    1. 解析每个模板,以便最终得到一块原始HTML的树,生成需要编码的动态值的表达式,以及条件(switch / if)和循环结构。
    2. 走树推断上下文。可能的上下文可能包括(HTML_PCDATA,IN_JS_DBL_QUOTED_STR等)因此,如果我在HTML PCDATA上下文中看到一大块原始HTML <a href=",那么我将移动到我期望URL的一部分的上下文。当我到达分支或循环时,单独跟随每个分支,然后加入上下文。
    3. 如果语言有模板,请尝试确定静态调用图,这样我就可以克隆模板并重写在多个上下文中调用给定模板的调用。
    4. 将调用生成动态值的表达式包装到库中我实现包含expectHtml(...)expectJsValue(...)等适当编码动态值的函数。例如。 expectHtml(...)<转换为&lt;
    5. 提供一些便利功能,以便向模板提供数据的代码可以使用RTTI指定动态值的语言以避免过度使用。因此,expectHtml(...)不会转义Html类型的值,因为它假定来自knownSafeHtml(...)stripBadTags(...)等安全来源

1 个答案:

答案 0 :(得分:0)

即将推出的Symfony在组件中被细分。他们一个接一个地释放它们。 Symfony Templating就是其中之一,也是你考试的好人选。