Exec():限制访问

时间:2018-07-30 21:29:53

标签: python-3.x security exec return-value

我正在将源代码放入数据库中,然后将调用Exec()函数。用户将无法直接访问此代码,但是出于安全性考虑,我只能将功能限制为您真正需要的功能。我使用了这段代码:

exposed_methods = {'rule': rule, 'print': print, 'return': 'return'}
exec([CODE_STRING], {'__builtins__': None}, exposed_methods)

但这太局限了,我似乎无法回到编辑内存中的变量或返回某些内容的过程。这是一个简单的测试:

string = """
if rule.test(True):
    variable_test = 'test1.1'
    return 'test1.2'
else:
    variable_test = 'test2.1'
    return 'test2.2'
"""

exposed_methods = {'rule': rule, 'print': print, 'return': 'return'}
exec(string, {'__builtins__': None}, exposed_methods)
  

回溯(最近通话最近):
  文件“”,第1行,位于   
  文件“”,第3行   语法错误:在外部“返回”   功能

该变量不在内存中,并且该方法未返回找到的

0 个答案:

没有答案