我在Python C ++应用程序中嵌入了Python 3.4。作为概述(或者如果可以的话,提供详细信息),如果系统用户能够提交任意Python代码以供执行,我应该考虑哪些安全注意事项?
有两种情况:
接受单个脚本自动导入模块并提供API以获取数据并放入内容(不涉及SQL,因此SQL注入不是一件事)。
接受一个存档,该存档应该包含一个完整的Python应用程序,该应用程序实现了一些接口,但也允许使用setup.py和/或requirements.txt来从SCM或PyPi安装应用程序依赖项。尚未施加任何依赖性限制。
在操作上,对此的“正常”用例最初是将其锁定在防火墙后面,因此只有“受信任”的用户才能拥有同时执行1和2的权限。
最近,人们一直在谈论扩大我们自己的范围(让客户接触)。最初它似乎是一个好主意,它打开的可能性是超级吸引人的,但警钟已经开始说,这有不好的想法写在它上面。
然而,这只是一种直觉,我不是安全专家,只能列举一些明显的原因,这是一个问题。
那么有没有办法在安全的情况下向客户公开上面的1和2(但大多数是1)?可以采取哪些步骤(如果有的话)来限制我们接受的任意Python的范围?
我刚刚遇到uWSGI,从目前为止我看来似乎做了类似的事情,目前通过他们的代码看他们是如何做到的但是我想在此期间我会问