Python动态执行代码怎么防止用户恶意破坏服务器

  • 比如用eval()执行用户自己的动态代码,用户可能会使用os.system('rm -rf /')等恶意命令破坏服务器
  • 除了用docker还有没有其他方式?(因为用户自定义动态代码需要用到当前后端项目本身的内容,所以在单独docker环境执行用户代码也不合适)
阅读 2.2k
1 个回答

Python 的 eval 支持你传入 locals/global ,你可以通过控制全局空间里可用的对象(比如自定义__builtin__)来限制用户代码在 eval 里能做的事情。

对于比较简单的需求(比如说允许用户调几个模块,其他都不允许访问),传必要的模块进去应该够了。

对于复杂的需求,用户代码自由度比较高,但有些比较敏感的操作不允许做的话,就得自己定制下了,可以看看GitHub上开源的沙盒,比如pysandbox

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题