如何创建一个lockeddown python环境?

2024-05-15 07:37:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我负责开发一个大型Python/Windows/Excel应用程序,该应用程序由一家在世界各地设有办事处的金融机构使用。最近一个国家的法规已经改变了,因此我们被告知需要创建一个“锁定”版本的发行版。在

在与我的外国同行进行了一些令人沮丧的谈话之后,他们似乎担心有人可能会滥用他们计算机上的python解释器来生成可能被用来规避安全的非标准应用程序。在

我最初的建议是取消python.exe以及pythonw.exe:我们的应用程序是一个Excel插件,它只使用Python DLL。这些exe文件从来没有实际使用过。在

我的对手仍然担心有人会对Python DLL进行调用——黑客可以利用“exec”函数,例如从另一种编程语言或能够调用Windows DLL中函数的虚拟机(例如VBA)中进行攻击。在

我们能做些什么来防止我们想要安装的DLL被滥用吗?在这一点上,我已经没有主意了。我需要找到一种方法来确保Python只运行我们授权的程序。在

当然,这个问题有一个荒谬的因素:因为计算机都有Excel和Word,所以它们都有VBA,这是一种著名的脚本语言,在功能上与Python相当。在

显然,在Excel的VBA完全开放的情况下,担心python是没有意义的,但是这是公司政治,我的团队建议使用python,所以我们需要证明我们的东西可以变得相当安全。在


Tags: 函数版本应用程序windows计算机国家vbaexcel
3条回答

一个想法是在.NET上的AppDomain中运行IronPython。参见大卫W.的评论here。在

另外,您可以导入一个模块来限制解释器写入文件。它叫做safelite。在

你可以使用它,并指出即使是Python的发明者也无法破坏该模块的安全性!(两次以上)

我知道写文件不是你唯一担心的安全问题。但是你被要求做的是愚蠢的,所以希望要求你的人看到“安全的Python”并感到满意。在

“合理安全”被任意定义为“比Excel和VBA更安全”。在

你赢不了那场战斗。因为这场战斗是为了错误的事情。任何人都可以使用任何EXE或DLL。在

你需要用不同的方式来定义“锁定”,以一种你可以成功的方式。在

您需要将“锁定”定义为“无法更改.PY文件”或“我们可以审核对.PY文件的所有更改”。如果你把比赛场地转移到你能控制的地方,你获胜的机会很小。在

拿到规章制度——不要相信别人会替你解释。在

一定要明确规定的要求——不要听别人的解释。在

不幸的是,Python以这种方式并不十分安全,这是众所周知的。它的动态特性,加上超乎标准操作系统功能的非常薄的一层,使得它很难锁定。通常最好的选择是确保运行该应用程序的用户拥有有限的权限,但我认为这是不实际的。另一种方法是在虚拟机中运行它,其中潜在的损害至少限于该环境。在

如果做不到这一点,了解Python C API的人可以构建一个定制的.dll,它明确地限制特定Python解释器的范围,检查导入和文件写入等,但这需要对您需要和不需要的功能进行彻底的检查,并在事后进行同样彻底的测试。在

相关问题 更多 >