Java中的安全模板引擎是什么?

时间:2011-05-23 14:48:47

标签: java django templates template-engine jinja2

我正在寻找一个Java模板引擎,它禁止在模板中执行代码,只允许标记。

在一个完美的世界里,我会寻找相当于Jinja2(或Django template engine)的等价物。 基于Django,模板标签将在我创建时使用,但用户无法创建模板标签(通过执行代码)。

我会在Play! Framework中实现它。

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

StringTemplate正是您要找的。

  

它的显着特点是   它strictly enforces model-view separation与其他引擎不同。   严格的分离使网站和   代码生成器更灵活   维护; 它还提供了一个   防御恶意的出色防御   模板作者

答案 1 :(得分:1)

根据您的要求,看起来您所需要的只是一个模板引擎,它不允许任何类似于JSP的scriptlet(在<%和%>之间)并且仅基于标签和/或属性。

如果是这样,我想建议您使用Thymeleaf http://www.thymeleaf.org(此处为comparison with JSP),其中我是作者。但是,如果我没有错,那么这些要求也可以通过Velocity http://velocity.apache.org来实现,所以最终可以选择!

答案 2 :(得分:1)

如果您想提供一种简单的方法来修改他们的模板,而无需了解数百个自定义标签并实现明确定义的功能,而在免费提供它的同时,您应该考虑被动模板。这确保了不会添加任何恶意代码:)在Java中使用被动模板的强引擎是Snippetory。但是,如果您想控制访问权限,访问控制也可能是一个好主意。