Python与数据库交互之MySQL是什么

一.项目背景
 本项目主要是通过sql注入案例来让大家了解如何防范sql攻击,希望对大家有所帮助
二.实现过程
》》创建数据表》》插入数据》》sql注入》》分析原因mysql> use gzh;database changedmysql> create table t_user( -> username varchar(120), -> password varchar(200)) -> engine=innodb default charset=utf8;query ok, 0 rows affected, 1 warning (0.13 sec)mysql> insert into t_user(username,password) values('tom','1234acd'),('alice','opqw362');query ok, 2 rows affected (0.04 sec)records: 2 duplicates: 0 warnings: 0mysql> select * from t_user;+----------+----------+| username | password |+----------+----------+| tom | 1234acd || alice | opqw362 |+----------+----------+2 rows in set (0.00 sec)注:数据库中总共有两条数据  
 》》sql注入import mysql.connector#配置数据库参数config={ host:localhost, port:3306, user:root, password:253611, database:gzh, auth_plugin:mysql_native_password}#初始化connect对象con=mysql.connector.connect(**config)#定义usernameusername=1 or 1=1#定义passwordpassword=1 or 1=1#书写sql语句,aes_decrypt为解密函数sql=select count(*) from t_user where username=%s and aes_decrypt(unhex(password),'helloworld')=%s;#初始化游标cursor=con.cursor()#执行sql语句,字符串拼接生成cursor.execute(sql%(username,password))#输出数据print(全部数据条数为:,cursor.fetchone()[0])#关闭链接con.close()总结:》》cursor.execute(sql%(username,password))通过字符串拼接生成sql语句》》由下图可知,我们sql注入已经成功,设想如果是delete语句会带来巨大风险》》原因:sql语句是解释性语言,在拼接sql语句时,容易被注入恶意的sql语句
三.防范sql注入
预编译机制》》解释:预编译sql语句就是数据库提前把sql语句编译成二进制,这样反复执行同一条sql语句的效率会提升》》原理:sql语句编译过程中,关键字已经被解析过了,所以向编译后的sql语句传入参数,都会被当作字符串处理,数据库不会解析其中注入的sql语句 执行过程图
import mysql.connectorconfig={ host:localhost, port:3306, user:root, password:253611, database:gzh, auth_plugin:mysql_native_password}#初始化connect对象con=mysql.connector.connect(**config)#定义usernameusername=1 or 1=1#定义passwordpassword=1 or 1=1#书写sql语句sql=select count(*) from t_user where username=%s and aes_decrypt(unhex(password),'helloworld')=%s;#初始化游标cursor=con.cursor()#执行sql语句,这里sql为预编译后的语句cursor.execute(sql,(username,password))#输出数据print(全部数据条数为:,cursor.fetchone()[0])#关闭链接con.close()总结:》》cursor.execute(sql,(username,password))通过预编译后二进制执行》》由下图可知,我们防范sql注入已经成功  

智能镜子显示器将掀起黑科技家居的浪潮
苹果ios15值得升级吗 ios15更新了哪些新功能
Facebook AI架构总监贾扬清被曝将离职Facebook并于3月中旬加入阿里
微控制器软件设计的主要功能有哪些?
DLP的LED光源投影设备的应用
Python与数据库交互之MySQL是什么
具有4Duino-24的无线脉搏率监测仪的制作
霍尔效应在传感器上的各种应用解析
HTC发布无线VR套装 延时竟从15毫秒变2毫秒
韩国5G产业通过扩大应用体验之路解决难题
详解松耦合无线充电解决方案
iOS11.1 Beta1测评:iphone8遇冷,靠iOS11.1 Beta1救!
高压断路器的作用是什么
手把手教你用万用表测量三极管
打造高品质医院网络,加速医院智慧化升级
2014年全球车用MEMS传感器排名前十供应商
Xilinx VCU118评估套件实现四通道28Gbps光纤高速数据传输
南京集成电路大学的成立能否缓解人才缺口压力?
Micro OLED和Micro LED两种显示技术有哪些不同?
详细介绍链表在操作系统中定义和使用的方式