def myFunc(arg1, arg2):
print "This is a test with " + arg1 + " and " + arg2
while (input != "quit"):
input = raw_input("> ")
if input != "quit":
eval(input)
此代碼給我一個提示,允許我用我想要的參數調用myFunc
。我知道,如果沒有提供字典eval
可能是危險的,所以我加了這一點:使用eval安全地執行功能
eval(input, {"__builtins__": {} }
現在我可以不再調用myFunc
。我如何解決這個問題,而不會讓eval
開放利用?
@ S.Lott,'eval'總是引入一個安全漏洞,但不是那個特定的安全漏洞;語句(包括'import')不能在只評估表達式的'eval'中執行。 – 2010-02-25 18:44:36
@Mike:注意'__import__'函數:http://docs.python.org/library/functions.html#__import__ – 2010-02-25 19:13:43
**沒有辦法使'eval'安全。**只需隱藏內建函數甚至沒有開始解決這個問題。例如,撤銷代碼可以很容易地從myFunc.func_globals ['__ builtins __']'中取回它們。 – bobince 2010-02-25 19:23:36