flask mysql sql注入_防止sql注入

本文介绍如何在Flask应用中处理用户输入,防止SQL注入攻击。通过使用参数化查询,如`%s`占位符和元组传递参数,避免了直接拼接SQL字符串带来的风险。示例中展示了正确执行SQL查询的方式,确保了安全性。
摘要由CSDN通过智能技术生成

@server.route('/login',methods=['post'])

def login():

username=flask.request.values.get('u')

password=flask.request.values.get('p')

sql="select * from USER where username='%s' and password='%s';"%(username,password)

print(sql)

#username=" ' or '1'='1"

#username=" ';show tables;--"

#username=

#select * from user where username='' or '1'='1' and password=''

#利用一个条件为真

res=op_mysql(sql)

if res:

#response=json.dumps()

response={'msg':'登陆成功'}

else:

response={'msg':'登录失败'}

return json.dumps(response,ensure_ascii=False)

#避免sql注入;注入的原理是引号

cursor.execute("select * from user where username=%s and password=%s",(username,password))

重写数据库方法:

from conf import setting

import pymysql

def test(a,b):

print(a,b)

li=[1,2]

d={'a':12,'b':13}

test(*li)

test(**d)

conn = pymysql.connect(host=setting.MYSQL_HOST, user=setting.USER, passwd=setting.PASSWORD, port=setting.PORT,

charset='utf8', db=setting.DB)

cur = conn.cursor(cursor=pymysql.cursors.DictCursor)

def op_mql_new(sql,*data):

print(sql)

print(name)

cur.execute(sql,*data)

print(cur.fetchall())

sql='select * from user where username=%s and password=%s'

name=['luonan1','123456']

op_mql_new(sql,name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值