执行可能不友好的python cod

2024-05-14 11:04:20 发布

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

假设在因特网上有一个服务器,你可以发送一段代码到那里进行评估。在某个时刻,服务器获取所有已提交的代码,并开始运行和评估它。但是,在某个时候,它肯定会撞上“操作系统('rm-rf*)“是某个邪恶的程序员发来的。除了“rm-rf”之外,你可以期望人们尝试使用服务器发送垃圾邮件或拒绝服务的人,或者胡闹“whiletrue:pass”之类的东西。在

有没有办法与这种不友好/不可信的代码合作?我尤其对python的解决方案感兴趣。不过,如果你有任何其他语言的信息,请分享。在


Tags: rm代码服务器语言垃圾邮件pass解决方案感兴趣
3条回答

这是不可能提供一个绝对的解决办法,因为'坏'的定义是相当难以确定。在

打开和写入文件是好还是坏?如果该文件是/dev/ram怎么办?在

你可以分析行为特征,也可以尝试阻止任何可能不好的行为,但你永远不会赢。Javascript就是一个很好的例子,人们总是在他们的计算机上运行任意的Javascript代码——它应该是沙盒的,但是会出现各种各样的安全问题和边缘条件。在

我不是说不要尝试,你会从这个过程中学到很多东西。在

许多公司花了数百万美元(英特尔刚刚在McAffee上花了数十亿美元)试图了解如何检测“坏代码”——每天运行McAffe防病毒软件的机器都会感染病毒。Python代码的危险性丝毫不亚于C。您可以运行系统调用、绑定到C库等

你可以检查一下pysandbox,虽然如果你负担得起的话,VM路由可能更安全。在

如果您不是特定于CPython实现的,那么应该考虑针对这些目的查看PyPy[wiki]——这种Python方言允许透明的代码沙箱。在

否则,可以在execeval的相应全局参数/局部变量中提供伪__builtin__和{}。在

此外,您可以提供类似字典的对象而不是真正的字典,并跟踪不受信任的代码对其命名空间的作用。在

此外,您可以实际跟踪该代码(在执行任何其他代码之前,在受限环境中发出sys.settrace()),以便在出现问题时中断执行。在

如果没有可接受的解决方案,请使用操作系统级别的沙盒,如chrootunionfs和标准的multiprocesspython模块,在单独的安全进程中生成代码工作线程。在

相关问题 更多 >

    热门问题