【发布时间】:2020-08-29 20:07:12
【问题描述】:
好的,所以我知道之前已经在许多不同的线程中问过这个问题,但我发现自己仍在努力减少我的疑虑。
我有一个应用程序,它允许用户传递字符串字典并从库中“选择”一个后端函数来处理它。这些函数是“工作流”库的一部分,由系统管理员在后端加载。可用函数存储在后端的清单文件中。
机制是这样的,用户将字典作为 json 发送到 Web 应用程序,并指定库中的哪个函数应该处理它。然后通过 python exec() 或 eval() 函数加载并执行该函数。
在执行之前,根据清单文件中的可用函数列表(白名单)检查请求的函数。
我的基本问题是,白名单可以使 exec() 和 eval 安全吗?它可以变得“更安全”吗?
【问题讨论】: