Pyhton中防止SQL注入的方法


Posted in Python onFebruary 05, 2015
c=db.cursor()

max_price=5

c.execute("""SELECT spam, eggs, sausage FROM breakfast

          WHERE price < %s""", (max_price,))

注意,上面的SQL字符串与后面的tuple之间的分隔符是逗号,平时拼写SQL用的是%。

如果按照以下写法,是容易产生SQL注入的:

c.execute("""SELECT spam, eggs, sausage FROM breakfast

          WHERE price < %s""" % (max_price,))

这个和PHP里的PDO是类似的,原理同MySQL Prepared Statements。

Python

Using the Python DB API, don't do this:

# Do NOT do it this way.

cmd = "update people set name='%s' where id='%s'" % (name, id) curs.execute(cmd)

Instead, do this:
cmd = "update people set name=%s where id=%s" curs.execute(cmd, (name, id))

Note that the placeholder syntax depends on the database you are using.
'qmark' Question mark style, e.g. '...WHERE name=?' 'numeric' Numeric, positional style, e.g. '...WHERE name=:1' 'named' Named style, e.g. '...WHERE name=:name' 'format' ANSI C printf format codes, e.g. '...WHERE name=%s' 'pyformat' Python extended format codes, e.g. '...WHERE name=%(name)s'

The values for the most common databases are:

>>> import MySQLdb; print MySQLdb.paramstyle format >>> import psycopg2; print psycopg2.paramstyle pyformat >>> import sqlite3; print sqlite3.paramstyle qmark

So if you are using MySQL or PostgreSQL, use %s (even for numbers and other non-string values!) and if you are using SQLite use ?
Python 相关文章推荐
Python+微信接口实现运维报警
Aug 27 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
python技能之数据导出excel的实例代码
Aug 11 Python
python读取LMDB中图像的方法
Jul 02 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
深入理解python多线程编程
Apr 18 Python
python实现简单倒计时功能
Apr 21 Python
浅谈Python基础之列表那些事儿
May 11 Python
Windows系统下安装Python的SSH模块教程
Feb 05 #Python
Python 冒泡,选择,插入排序使用实例
Feb 05 #Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 #Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 #Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 #Python
Python、Javascript中的闭包比较
Feb 04 #Python
线程和进程的区别及Python代码实例
Feb 04 #Python
You might like
PHP的开合式多级菜单程序
2006/10/09 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JS验证不重复验证码
2017/02/10 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
Python OpenCV获取视频的方法
2018/02/28 Python
浅谈python标准库--functools.partial
2019/03/13 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python实现五子棋人机对战游戏
2020/03/25 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
python 实现IP子网计算
2021/02/18 Python
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
地质灾害防治方案
2014/05/14 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL