纯 Python 中的 Python 沙盒带来了独特的挑战,因为它涉及将 Python 代码与主机环境隔离以防止恶意用户以免损害系统。让我们探讨解决此问题的两种主要方法,并确定创建安全脚本环境的合适替代方案。
Messa 建议创建一个限制访问全局变量的受限执行环境。虽然此方法提供了表面上的保护,但它很容易受到允许代码逃逸沙箱的攻击。恶意用户可以利用异常、操纵内部状态或利用字节码操作来突破沙箱。
此方法涉及解析 Python 代码并有选择地删除使用 ast 模块的不需要的构造。通过消除导入语句、函数调用和其他潜在的安全风险,可以创建适合特定要求的安全执行环境。
如果 Pythonic 脚本语法不是绝对必要时,请考虑使用其他用纯 Python 编写的开源脚本解释器,以满足变量、条件和函数调用的标准。这些解释器可以为您的网页游戏提供更强大、更安全的基础。
对于那些不使用 Google App Engine (GAE) 的用户,PyPy 沙箱提供据报道,这是一个“真正的”沙箱解决方案。其功能受到了用户的称赞,证明了其在防止沙箱逃逸方面的有效性。
您的要求特别提到了对变量、基本条件和函数调用(不包括定义)的支持)。方法 2 涉及代码解析和 AST 操作,似乎是一个可行的评估选项。它允许定制,并且可以有效地删除不需要的构造。
通过仔细考虑执行环境和代码解析技术,可以在纯Python中实现沙盒Python。虽然真正功能齐全的脚本语言可能对您的游戏来说有些过分,但此处提供的替代方案提供了灵活性和安全性的平衡。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3