2011-08-09 58 views
4

我想将报表生成器构建到我的Web应用程序中。用户通过网站的其他部分收集数据,然后应该能够生成“报告”,以便他/她可以以文档样式使用所述数据。我希望用户能够使用基本的数学功能,获取/设置他们自己的变量等。我想为什么重新发明轮子?如果我允许用​​户使用类似Twig Template Engine的文字编写报告,并且仅启用某些扩展程序以供他们使用,这是否看起来合理安全? Twig模板已经删除了在标记中找到的任何PHP,并且除了基本的字符串变更等,没有太多可以使用的强大功能。让我知道你的想法。向用户公开PHP模板引擎?

回答

3

枝条具有相当强大的sandbox extension,它完全符合您所描述的内容。有了足够严格的安全政策,我在这里看不到任何问题。

+0

这有多广泛使用? https://github.com/fabpot/Twig/issues/search?q=sandbox表示它在一年的更长时间内一直存在,但是有没有人协力攻击Twig的沙盒?政策制定者有最佳做法吗? –

+1

我知道整个Symfony2代码库(其中Twig用作默认模板引擎)受SektionEins(http://symfony.com/blog/symfony-2-0)的安全审计(最后一个项目符号点“守则”),但是无论是Twig和沙箱扩展是否都经过了专门的测试,我不能说。就最佳实践而言,除了所提供的默认政策之外,我真诚地怀疑此类问题。 – Problematic

+2

感谢您的链接。我无法在审计的范围或基本规则中找到任何内容。对于OP,我会问Symfony他们是否依赖沙箱来做任何事情,然后才依靠它来保护任何有价值的东西。当我写沙箱时,第一批攻击者总是发现一些东西。 –

1

如果树枝做到了你所需要的,为什么不呢?它做得非常好,有一个沙箱模式,可以编译模板。相反,从PHP提供的PHP很难划分,所以使用一些模板对我来说听起来不错。