您的位置:首页 > 编程语言 > Python开发

python web 数据库sql注入

2018-02-14 19:05 267 查看
大家都知道在数据库查询数据时,是被提示尽量少用字符串查询数据,而是用(?,?,?)的方式代替,这样就是为了防sql注入。
那什么是sql注入呢,我们下面就演示一下:
错误实例:sql = '''
SELECT
id,username,email
FROM
users
WHERE
username="{}" and password="{}"
'''.format(usr, pwd)数据库中有条数据,username = fei ,password = 1234 ,email = fei@qq.com
我们这里usr = fei,pwd = 1234
我们执行正确的数据,返回,如下:打开了数据库
查询到的数据 [(1, 'fei', 'a@b.c')]这样就查询到了需要的数据,但是我们用一条数据库不存在的数据,usr = fei11,pwd = 1234,如下:打开了数据库
查询到的数据 []数据为空,因为数据库根本没有这条数据!,但是,用sql注入的话,却可以轻松查到数据
sql注入,只需要改变一句话: usr = 'fei11" or "1"="1'我们再次查询:打开了数据库
查询到的数据 [(1, 'fei', 'a@b.c')]看见了吧,因为是字符串查询,所以用个 or 条件就可以轻松摆脱限制查询到数据。
现在,我们改成正确的代码: usr = 'fei11" or "1"="1'
# usr = 'fei222'
pwd = '1234'
sql = '''
SELECT
id,username,email
FROM
users
WHERE
username= ? and password= ?
'''
cursor = conn.execute(sql,(usr,pwd))
usr选择错误的且有注入,然后看结果:打开了数据库
查询到的数据 []查询到的为空,所以在数据库操作中尽量少用字符串插入,防止sql注入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息