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自动安装pip
Apr 24 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
python3如何将docx转换成pdf文件
Mar 23 Python
python使用webdriver爬取微信公众号
Aug 31 Python
Python 一句话生成字母表的方法
Jan 02 Python
Django model update的多种用法介绍
Mar 28 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
python实现IOU计算案例
Apr 12 Python
python实现简单的tcp 文件下载
Sep 16 Python
python实现简易自习室座位预约系统
Jun 30 Python
分享python函数常见关键字
Apr 26 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
srcElement表格样式
2006/09/03 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
python 实现绘制整齐的表格
2019/11/18 Python
python中有帮助函数吗
2020/06/19 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
顶撞老师检讨书
2014/02/07 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
谢师宴学生致辞
2015/07/27 职场文书
公司考勤管理制度
2015/08/04 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
MySQL数据库 任意ip连接方法
2022/05/20 MySQL