从客户端向服务器发送javascript函数以格式化从数据库接收的响应并返回csv进行下载

时间:2016-12-01 07:31:18

标签: javascript node.js express client-server

我有一个用例,我需要为一堆查询生成csv报告。

我在后端写了一个常见的POST reqHandler,用nodejs / express编写,它接收一个json对象,如下所示

{
    "converter": <converter function>,
    "fields": <CSV header fields >,
    "reqUrl": <REST API>,
    "queryObj": <queryObject for the API>
}

在后端,我eval()转换器函数并从REST API执行响应对象上的函数,格式化响应并使用res.download将附件返回给客户端。

对此有何安全隐患?有没有其他方法来解决这个问题?

PS:此端点仅可供特定用户组访问(例如,管理员)

1 个答案:

答案 0 :(得分:0)

首先评估直接来自帖子请求的代码是一种非常糟糕的安全操作,因为用户可能会向您的应用程序发送任何javascript函数,因此您的应用程序会暴露在严重的安全威胁之下。即使此帖子网址仅供管理员访问,您仍然希望过滤他们可以执行的javascript数量。我建议你创建一个包含你需要的函数的对象,然后从post请求发送该函数的名称或别名。这样,您就可以限制用户的访问权限以及系统可能面临的威胁。

根据我的经验,即使系统仅供我们的运营部门使用,它仍然会受到“事故”所引起的许多安全问题的影响。