如何提供安全模板供用户使用python进行修改?

Fan*_*Lin 0 python templates web

我正在构建一个多用户网络应用程序。每个用户都可以在我的应用程序下拥有自己的网站。我正在考虑如何允许用户修改模板而不存在安全问题?我评估了一些 python 模板引擎。例如,genshi,它是一个非常出色的模板引擎,但是允许用户修改genshi模板可能是危险的。它的语法如下:

<?python

?>
Run Code Online (Sandbox Code Playgroud)

这个语法允许你运行任何你想要 python 能做的事情。我注意到它似乎可以通过传递一些参数来关闭。但仍然存在很多潜在的问题。例如,用户可以访问内置函数和传递变量的方法。例如,如果我将 ORM 对象传递给模板。它可能包含一些我不想让用户触摸它的方法和变量。可能会喜欢这样:

site.metadata.connection.execute("drop table xxx")
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何允许用户修改其网站的模板而不出现安全问题?任何Python模板引擎都可以使用。

谢谢。

Joe*_*way 5

Jinja2 是一个类似 Django 的模板系统,具有沙箱功能。我从未尝试过使用沙箱,但我非常喜欢 Jinja2 作为 Django 模板的替代品。它仍然提倡模板与业务逻辑的分离,但具有更多 Pythonic 调用约定、命名空间等。

Jinja2 沙盒