可能的故障-Python



潜在用户有可能实现这一声明吗?

secret = 25134231
z = ast.literal_eval(user_input)
if z == secret:
     access.granted() 

编辑以进一步回答您的问题。。。我认为您正在通过literal_eval()从用户输入(以及其他内容)进行函数调用,但答案是否定的,这是不可能的。literal_eval()是专门为防止这种类型的输入而设计的。

对比见下文。用户可以键入access_granted(),函数的运行方式与用户键入24134231时相同。

import ast
def access_granted():
    print 'Yay'
while True:
    secret = 25134231
    user_input = raw_input('In: ')
    z = eval(user_input)
    if z == secret:
        access_granted()

示例:

In: access_granted()
Yay
In: 'Foo'
In: 25134231
Yay

最新更新