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

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

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


回答:

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

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

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

以上是 Python动态执行代码怎么防止用户恶意破坏服务器 的全部内容, 来源链接: utcz.com/p/938195.html

回到顶部