fac*_*cha 8 python trusted-vs-untrusted
假设互联网上有一台服务器可以发送一段代码进行评估.在某些时候,服务器会获取已提交的所有代码,并开始运行和评估它.但是,在某些时候它肯定会碰到一些邪恶的程序员发送的"os.system('rm -rf*')".除了"rm -rf"之外,你可以期待人们尝试使用服务器发送垃圾邮件或者给某人发送垃圾邮件,或者使用"while True:pass"之类的东西.
有没有办法与这种不友好/不受信任的代码合作?特别是我对python的解决方案很感兴趣.但是,如果您有任何其他语言的信息,请分享.
如果您不是特定于CPython实现,您应该考虑将PyPy [wiki]用于这些目的 - 这种Python方言允许透明代码沙盒.
否则,你可以提供假的__builtin__和__builtins__相应的globals/locals参数exec或eval.
此外,您可以提供类似字典的对象而不是真正的字典,并跟踪不受信任的代码对其命名空间的影响.
此外,您实际上可以跟踪该代码(sys.settrace()在执行任何其他代码之前在受限制的环境中发布),这样您就可以在出现问题时中断执行.
如果没有一个解决方案是可以接受的,那么使用OS级沙盒chroot,unionfs以及标准multiprocesspython模块在单独的安全进程中生成代码worker.
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |