可能的故障 - Python

时间:2015-03-28 22:37:00

标签: python security boolean-logic

潜在用户是否有可能使此声明成立?

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

1 个答案:

答案 0 :(得分:0)

编辑更多回答你的问题...我认为你正在通过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