【发布时间】:2018-10-03 04:56:49
【问题描述】:
我正在做一个测试网络服务项目,我需要在其中创建一些动态变量。为了实现这一点,我别无选择,只能使用如下的 exec() 函数。
for parameter in parameter_names:
if parameter["type"] == "number":
exec("%s= %s(request.args.get('%s'))"%(parameter["name"],"float",parameter["name"]))
para_collection[parameter["name"]] = eval(parameter["name"])
else:
exec("%s= %s(request.args.get('%s'))"%(parameter["name"],"str",parameter["name"]))
para_collection[parameter["name"]] = eval(parameter["name"])
在这里,我接受来自网络调用的值并将它们分配给动态变量名称。即使这段代码给了我预期的结果,我也看到了许多 StackOverflow 帖子,提到了 exec() 函数的安全风险。因此,我想评估此代码的安全性。
我需要测试哪些场景? 如果不是 exec() 有什么替代方案?
【问题讨论】:
标签: python-3.x exec dynamic-variables