1
3
我们这样做是为了我们的一些内部工具 我们所做的工作可以保护我们不受异常问题的影响,并阻止用户在配置脚本中进行过多的创造性尝试。然而,它并不能保护我们免受无限循环或积极恶意的第三方的伤害。 这里的方法的核心是在锁定的exec中运行脚本。
此处需要注意的要点:
由于这些原因,我们强加了这样的限制,即我们的配置脚本应该生成纯的原始数据结构(通常只是ints、strings、list、tuples和none),然后我们单独验证。 |
2
2
不幸的是,对于标准的python这个问题,您不能做很多事情。当python解释器运行“配置代码”时,该代码可以做它喜欢做的任何事情,包括访问主机程序或不返回控制权。在单独的进程中运行配置代码可能会有所帮助,但也会限制主机和配置代码之间的交互。 你最好去看看Pypy项目的 sandbox feature . 这可能是您所需要的,但也可能涉及到您需要集成的相当多的工作。 Is there an alternative to rexec for Python sandboxing? 还讨论了这个主题。 你也应该问问自己这个问题对你来说有多重要。我想这取决于您的用例以及谁将要编写配置代码。 |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |