Python 防止mysql 注入的两种方式

 

Python防止sql注入一般有两种方法

 

1. escape_string
 
MySQLdb.escape_string(param)

注意:如果报错出现

'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

# 因为用户输入的字符串的字符集是ascll,但是ascll不支持中文, 所以我们可以把python的默认字符集改成utf-8就可以了

     

2. excute参数化传递
 
cur.excute(sql, (str1,str2))
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='test')
param = 'aaa'

## 第一种
escape_param = MySQLdb.escape_string(param)
cur = conn.cursor() cur.execute("select * form table where col="+escape_param+"") cur.commit() cur.close()

##第二种
cur = conn.cursor()

  # 这是有效的,正确方式
  cur.execute('select * from table where col=%s',(param,))

  # 这是无效的,只是普通的占位符替换
  cur.execute('select * from table where col=%s'% (param,))

cur.commit()
cur.close()

 

转载于:https://www.cnblogs.com/yanguhung/p/10531728.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值