我有一个python片段,它对用户提供的python执行exec
:
import sys
import traceback
def foo():
print("jailbreak!")
c_globals = {}
c_locals = {}
try:
exec(compile(open("core.py", "rb").read(), "core.py", 'exec'), c_globals, c_locals)
c_locals["update"]()
except Exception:
print(traceback.format_exc(2))
用户提供的python是否可能“越狱”或使调用代码崩溃?我知道用户代码可以调用exit
,但除此之外,用户可能会有哪些不当行为?你知道吗
我仔细阅读了这篇question,但答案似乎有些陈旧。你知道吗
说清楚一点:我不是在找防弹沙盒。我在寻找用户可能会射中自己脚的方法,这样我就可以防止他们这样做。这是为了我正在制作的一个“自食其果”的电脑游戏。你知道吗
用户提供的代码在同一进程中运行,这意味着它与您的代码具有相同的访问权限和特权。你知道吗
由于Python允许循环导入,我们可以完成您的示例:
用户还可以使用与您自己的代码相同的权限运行shell命令:
用户还可以简单地耗尽资源。 以下将最大限度地提高单个核心的CPU使用率:
exec
在调用代码的同一上下文中执行代码,因此默认情况下根本不提供任何“沙盒”。你知道吗相关问题 更多 >
编程相关推荐