如何解决Python,Excel,评估和主要罪过
好吧,所以我知道以前在许多不同的线程中都曾问过这个问题,但我发现自己仍在努力减少怀疑。
我有一个允许用户传递字符串字典并从库中“选择”后端函数进行处理的应用程序。这些功能是“工作流”库的一部分,并由系统管理员在后端加载。可用功能存储在清单文件的后端。
机制如此,用户可以将字典作为json发送到Web应用程序,并指定库中的哪个函数应对其进行处理。然后通过python exec()或eval()函数加载并执行该函数。
在执行之前,对照清单文件中的可用功能列表(白名单)检查所请求的功能。
我的基本问题是,将白名单列入exec()和eval可以安全吗?可以使它“更安全”吗?
解决方法
据我了解,该功能受到管理员的信任,这使其与您安装的任何python模块一样安全。只要确保exec部分仅在受信任的代码上完成即可。这是一个示例,其中将加载和执行与文件同名的函数。
import json
from pathlib import Path
# files named the same as the function,no .py
FUNCTION_DIR = Path("/my/functions/are/here")
def run_func(name,data):
try:
func_namespace = {}
exec(open(FUNCTION_DIR/name).read(),func_namespace)
return func_namespace[name](json.dumps(data))
except Exception as e:
return "Hey,what kind of game are you playing here? " + str(e)
该函数自然被列入白名单,因为它位于已知安全的目录中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。