【问题标题】:Security concerns for jsRender inside node.js processnode.js 进程中 jsRender 的安全问题
【发布时间】:2016-07-22 16:50:35
【问题描述】:

我有类似聊天的 node.js 应用程序,我需要做一些类似于模板的东西。所以任何用户都可以制作自己的模板,稍后再渲染。

所以我有两种方法:

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

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

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

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

【问题讨论】:

  • 什么样的模板,比如html模板?
  • 更像是json请求,可能包含用户指定的属性

标签: javascript node.js security eval jsrender


【解决方案1】:

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

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

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

【讨论】:

  • 您好鲍里斯,您的回答非常有用。感谢它和 JsRender 本身!
猜你喜欢
  • 2018-11-28
  • 2014-01-24
  • 2012-05-11
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多