python open 函数漏洞_input()函数中的Python漏洞

在本文中,我们将学习在版本2.x中输入函数如何以不良方式运行。或更早。在2.x版中。raw_input()函数可替换该input()函数。在较新的版本3.x中。或稍后,将两个功能的所有所需特征和功能合并到该input()方法中。

首先,让我们看一下在Python 2.x中接受输入的内置函数的输入类型。

示例# Input Given : String

str1 = raw_input("Output of raw_input() function: ")

print type(str1)

str2 = input("Output of input() function: ")

print type(str2)

# Input Given : Float

str3 = raw_input("Output of raw_input() function: ")

print type(str3)

str4 = input("Output of input() function: ")

print type(str4)

# Input Given : Integer

str5 = raw_input("Output of raw_input() function: ")

print type(str5)

str6 = input("Output of input() function: ")

print type(str6)

输出结果Output of raw_input() function:

Output of input() function:

Output of raw_input() function:

Output of input() function:

Output of raw_input() function:

Output of input() function:

解释-从输出中可以很明显地看出raw_input函数将输入显式转换为字符串类型,而与提供的输入类型无关。相反,输入函数保留与输入期间提供的数据类型相同的数据类型。

现在,在看到上面的示例之后,您可能想知道,如果输入函数保留了数据类型,那么为什么它容易受到攻击?让我们用插图来澄清一下-

插图1:现在让我们使用随机模块制作骰子游戏。

示例import random as rd

number = random.randint(1,6)

print ("Pick a number between 1 to 6")

while True:

user_input = input("Guess the number: ")

if user_input==number:

print ("你猜对了。")

break

else:

print ("OOPS! try it next time.")

continue

解释-如果用户提供整数输入,则将根据条件表达式计算所需的输出。

如果用户提供了一个字符串输入,即与变量名相同,在该变量名中我们使用random模块存储了由色子生成的随机整数,那么还将计算输出。但这不一定是我们要计算的期望输出。实际上,当输入字符串时,它必须引发一个错误,错误的输入类型。它认为变量名称等效于用户直接输入的数字,该表达式产生True布尔值,游戏结束。相反,如果我改用raw_input(),则不会遇到此类问题。

如果我们存储登录凭据,用户详细信息和帐户密码,则此漏洞可能致命。

插图1:现在让我们创建一个系统,该系统要求输入引脚并将其与存储的值进行比较。

示例stored_value = 7863

def return_function():

return stored_value

inp = input()if inp == stored_value:

print "You Entered Correctly"

else:

print "Oops! It's Incorrect"

说明

正如我们在前面的ILLUSTRATION中讨论的那样,如果提供的输入为整数类型,则该函数正常工作。但是在任何情况下,用户提供与函数的返回值相同的输入,条件变为True并产生输出。

在处理重要且机密的信息(例如密码和密码)的情况下使用,这非常危险。这可以通过使用Python 2.x中提供的raw_input()来克服。

从以上两个说明中可以很明显地看出,输入函数使程序可以直接进行变量攻击。

结论

在本文中,我们了解了input()在Python 2.x中使用该函数时遇到的所有问题和漏洞。需要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值