我正在开发纯Python的网页游戏,并希望有一些简单的脚本可用于更多动态的游戏内容.特权用户可以实时添加游戏内容.
如果脚本语言可以是Python,那就太好了.但是,由于恶意用户可能会造成严重破坏,因此无法在访问游戏运行环境的情况下运行.是否可以在纯Python中运行沙盒Python?
更新:事实上,由于真正的Python支持会有点过分,因此使用Pythonic语法的简单脚本语言将是完美的.
如果没有任何Pythonic脚本解释器,是否有任何其他开源脚本解释器用纯Python编写,我可以使用?要求是对变量,基本条件和函数调用(不是定义)的支持.
假设互联网上有一台服务器可以发送一段代码进行评估.在某些时候,服务器会获取已提交的所有代码,并开始运行和评估它.但是,在某些时候它肯定会碰到一些邪恶的程序员发送的"os.system('rm -rf*')".除了"rm -rf"之外,你可以期待人们尝试使用服务器发送垃圾邮件或者给某人发送垃圾邮件,或者使用"while True:pass"之类的东西.
有没有办法与这种不友好/不受信任的代码合作?特别是我对python的解决方案很感兴趣.但是,如果您有任何其他语言的信息,请分享.
我的任务是构建一个应用程序,最终用户可以在其中使用自定义规则来评估返回的查询是否导致警告或警报(基于自己的阈值)。
我已经为用户构建了一种方法来模板化他们的逻辑。一个示例如下所示:
if (abs(<<21>>) >= abs(<<22>>)):
retVal = <<21>>
else:
retVal = <<22>>
Run Code Online (Sandbox Code Playgroud)
的<<21>>和<<22>>参数将与前面在该程序中找到的值来代替。一旦所有这些替换发生,我就有一个非常简单的 if/else 块(在本例中),它看起来像这样存储在变量 ( execCd) 中:
if (abs(22.0) >= abs(-162.0)):
retVal = 22.0
else:
retVal = -162.0
Run Code Online (Sandbox Code Playgroud)
这将exec()正确。现在,我怎样才能确保这一点?我看过这篇文章:http : //lybniz2.sourceforge.net/safeeval.html
我的代码最终看起来像这样:
safe_list = ['math','acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'de grees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
safe_dict = dict([ (k, locals().get(k, None)) for k …Run Code Online (Sandbox Code Playgroud) 可能重复:
Python,安全,沙箱
我正在用Python构建一个企业Web系统,它允许上传脚本并运行服务器端.鉴于我已经开发了Python及其如此简单的语言,它似乎是编写脚本的好语言.但是,存在安全隐患,我想阻止除有限子集之外的所有函数调用.有没有一种机制可以用来做这个或其他技术?我还需要使用别的东西吗?我正在开发Pyramid/Pylons.