我需要将代码发送到远程客户端以在其中执行,但安全性是我现在关心的问题。我不想在那里执行不安全的代码,所以我想控制程序在做什么。我的意思是,例如,知道是否正在建立连接、连接到哪里、是否正在读取本地文件等。这可以用 Python 实现吗?
编辑:我正在考虑类似于 Android 权限系统的东西。我想知道代码会做什么,如果它做了不同的事情,请停止它。
我需要将代码发送到远程客户端以在其中执行,但安全性是我现在关心的问题。我不想在那里执行不安全的代码,所以我想控制程序在做什么。我的意思是,例如,知道是否正在建立连接、连接到哪里、是否正在读取本地文件等。这可以用 Python 实现吗?
编辑:我正在考虑类似于 Android 权限系统的东西。我想知道代码会做什么,如果它做了不同的事情,请停止它。
Python 中曾经有一个名为 的模块bastian
,但由于它不那么安全而被弃用。还有一个我相信的东西叫做RPython
,但我不太了解。
在这种情况下,我会使用Pyro并在目标服务器上编写代码。这样你就知道客户端只能执行编写和测试过的代码。
编辑- 值得注意的是,Pyro 还支持http://en.wikipedia.org/wiki/Privilege_separation - 尽管我不必为此使用它。
我认为您正在寻找沙盒 python。过去曾努力实施这一点,但几年前已被废除。
python wiki 中的沙盒 python很好地概述了您的用例的可能选项。
最严格(但可能是最慢)的方法是在模拟器中的裸操作系统上运行 Python。
根据您使用的操作系统,有几种方法可以运行有限制的程序,但没有模拟器的开销:
chroot
系统调用。您可以使用不同的 Python 运行时: