0

我需要将代码发送到远程客户端以在其中执行,但安全性是我现在关心的问题。我不想在那里执行不安全的代码,所以我想控制程序在做什么。我的意思是,例如,知道是否正在建立连接、连接到哪里、是否正在读取本地文件等。这可以用 Python 实现吗?

编辑:我正在考虑类似于 Android 权限系统的东西。我想知道代码会做什么,如果它做了不同的事情,请停止它。

4

4 回答 4

1

Python 中曾经有一个名为 的模块bastian,但由于它不那么安全而被弃用。还有一个我相信的东西叫做RPython,但我不太了解。

在这种情况下,我会使用Pyro并在目标服务器上编写代码。这样你就知道客户端只能执行编写和测试过的代码。

编辑- 值得注意的是,Pyro 还支持http://en.wikipedia.org/wiki/Privilege_separation - 尽管我不必为此使用它。

于 2012-09-30T11:19:11.873 回答
1

我认为您正在寻找沙盒 python。过去曾努力实施这一点,但几年前已被废除。

python wiki 中的沙盒 python很好地概述了您的用例的可能选项。

于 2012-09-30T11:49:14.133 回答
1

最严格(但可能是最慢)的方法是在模拟器中的裸操作系统上运行 Python。

根据您使用的操作系统,有几种方法可以运行有限制的程序,但没有模拟器的开销:

于 2012-09-30T12:15:29.187 回答
1

您可以使用不同的 Python 运行时:

  • 如果您使用Jython运行脚本;你可以利用Java的权限系统
  • 使用Pypy 的沙盒版本,您可以选择允许在控制器脚本中运行的内容
于 2012-09-30T12:34:05.457 回答