day7,防止sql注入和批量执行

1、sql注入:安全测试中的一种

 利用sql语句中的:,有以下两种情况;

1),sql语句:sql="select *from (表名) where username='%s';"%name

 当username=" ' or '1'='1 "

2)select *from(表名) where username='' or '1'='1'  这个能查询出表中的所有结果,因为1=1表示永远为真

当username="  ';show tables;-- "                               '--'在sql语句中表示注释

select *from(表名) where username='';show tables;--' 

# # # 没有',可以防止sql注入
# # sql = "select * from st_stu where name=%s",(name,sex)
# # # 可以sql注入
# # sql ="select * from st_stu where name='%s'",(name,sex)

2、防止SQL注入sql的写法 利用*data的可变参数
import pymysql
conn=pymysql.connect(...)
yb=conn.cursor()
def test1(sql,*data):
print(sql)
print(data) -->元组('lyj',)
yb.execute(sql,data) -->'select *from 表 where name=%s',('lyj')
print(yb.fetchall())

sql='select * from 表 where name=%s'
name='lyj'

3、sql的批量执行

import pymysql
conn=pymysql.connect(...)
yb=conn.cursor()
sql=insert into .....
all_data=[
[
'12','01,02,03,04'],
['13','09,10,11,12'],
['08','11','12''01','07']
]
yb.executemany(sql,all_data)
print(yb.fetchall())


其他代码见 day7的先登录后支付,未完
posted @ 2018-04-14 23:06  liyajing  阅读(117)  评论(0编辑  收藏  举报