node.js进程中jsRender的安全问题

时间:2016-07-22 16:50:35

标签: javascript node.js security eval jsrender

我有像聊天一样的node.js应用程序,我需要制作类似于模板的东西。因此,任何用户都可以制作将在以后呈现的自己的模板。

所以我有两种方式:

  1. 我可以使用常规字符串替换并将预定义参数替换为实际值

  2. 我可以使用jsRender,只允许用户指定已禁用代码执行的jsRender模板。

  3. 我更喜欢第二种方法,因为它更灵活,但我担心用户可能会指定一些恶意的javascript代码,这些代码将由服务器端的jsRender执行,并且可能会泄漏数据。

    jsRender在node.js服务器上运行是否安全,并允许用户指定自己的模板,这些模板将在服务器端执行?

1 个答案:

答案 0 :(得分:2)

JsRender旨在使用户定义的模板无法运行任意代码。

您当然必须将 allowCode 设置选项保留为默认值false(请参阅http://www.jsviews.com/#settings/allowcodehttp://www.jsviews.com/#allowcodetag@tmpl)。

用户可以在模板中包含丰富的模板表达式,但是他们无法插入访问模板范围之外的任何变量(或运行任何方法)的代码。他们只能访问上下文数据/模型,使用标准运算符,并使用您(作者)决定提供的任何辅助方法和变量。