将 javascript 函数从客户端发送到服务器,以格式化从数据库收到的响应并返回 csv 以供下载



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

我在用nodejs/express编写的后端上有一个通用的POSTreqHandler,它接收一个json对象,如下所示

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

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

对此有何安全隐患?还有其他方法可以解决这个问题吗?

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

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

根据我的经验,即使系统仅适用于我们的运营部门,它仍然受到许多安全问题的影响,这些问题是由他们所说的"事故"引起的。

最新更新