安全的JavaScript模板

时间:2010-07-07 11:12:25

标签: javascript templates sandbox

我希望允许用户创建模板来显示他们的数据,这些模板将使用JavaScript呈现。我想知道是否可以安全地做到这一点?我只需要简单的东西,比如循环和if-else语句,当然还需要访问和打印给定对象中变量的值。

是否有任何模板库允许这种或简单的方法来完成此任务?

2 个答案:

答案 0 :(得分:0)

您无法在浏览器中运行安全的东西。

您可以做的是使用与主页略有不同的src在IFRAME中沙箱中可能不安全的内容。例如:

  • 您的信息页位于www.example.com
  • 并且您的iframe类似于:sandbox.example.comwww.example.com:8080,...

IFRAME将无法访问父页面资源。这并不妨碍XSS,但这是你必须要关心的另一个问题。

如果你看一个模板引擎,看一下PURE,它就能很好地区分HTML和JS。

然后,您可以选择让人们只构建模板的HTML,并将JS代码留在您这边。如有必要,构建一个清理函数以确保HTML不包含JS。

答案 1 :(得分:0)

以下内容正在考虑可能的Node.js服务器安全选项(无任意代码执行/无限循环)。浏览器安全(XSS)很难/不可能。

小胡子似乎是为确保用户使用的安全而明确设计的,并防止无限循环以避免服务器DoS:https://github.com/janl/mustache.js/

您还可以查找JavaScript Liquid端口:Liquid templating for Node.js,例如https://github.com/liquid-lang/liquid-node,因为Liquid是默认的GitHub页面选择,因此在服务器上运行应该是安全的。

已知为安全的选项: