python+Django实现防止SQL注入的办法


Posted in Python onOctober 31, 2019

先看看那种容易被注入的SQL

id = 11001
    sql = """
    SELECT
      id,
      name,
      age
    FROM
      student
    WHERE
      id = """+id+""" 
    """
    cursor = connection.cursor()
    try:
      cursor.execute(sql)
      result = cursor.fetchall()
      for result1 in result:
        // 代码块
        pass
    finally:
      cursor.close()

一般来说写SQL语句在程序中,若有where条件一般都可能会去直接拼接,到那时这种方式容易被SQL注入,首先说明下什么是SQL的注入,简单来说就是你写的SQL被别人在页面上拼接了SQL。比如拼接1=1这种条件,如果登录接口被注入1=1那么就可以随意进入你的程序了。所以才要防止SQL的注入。

下面再来看看防止SQL的注入

id = 11001
 params = []
    sql = """
    SELECT
      id,
      name,
      age
    FROM
      student
    WHERE
      id = %s
    """
    params.append(id)
    cursor = connection.cursor()
    try:
      cursor.execute(sql, params)
      result = cursor.fetchall()
      for result1 in result:
        // 代码块
        pass
    finally:
      cursor.close()

我们把直接拼接的条件变量放入集合再把集合带入执行SQL的方法,就可以避免被注入的风险,在SQL的条件中使用%s进行站位,要注意的是这个%s是有顺序的,比如说上面这个SQL后面在跟一个条件name=%s那么下面的params集合也要多加一个元素params.append(name)这个时候name是在id后面的在集合中。这样可以一一对应,但如果要是把params.append(name)写在了params.append(id)前面SQL执行就会出现id=name and name = id 的条件就乱了,甚至还会报错。
使用connection完毕之后一定要记得close,connection是django.db中的,导入不要导入错了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
TensorFlow模型保存/载入的两种方法
Mar 08 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Linux 修改Python命令的方法示例
Dec 03 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 Python
python命令行参数用法实例分析
Jun 25 Python
python 多维高斯分布数据生成方式
Dec 09 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
python中使用input()函数获取用户输入值方式
May 03 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
tensorflow中的数据类型dtype用法说明
May 26 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 Python
python如何为list实现find方法
May 30 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 #Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 #Python
如何关掉pycharm中的python console(图解)
Oct 31 #Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 #Python
python实现根据文件格式分类
Oct 31 #Python
Python简易计算器制作方法代码详解
Oct 31 #Python
python3 pillow模块实现简单验证码
Oct 31 #Python
You might like
php array_map()数组函数使用说明
2011/07/12 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python发送Email方法实例
2014/08/21 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
生物化工专业个人自荐信
2013/09/26 职场文书
出纳担保书范文
2014/04/02 职场文书
师德师风承诺书
2014/05/23 职场文书
法定代表人资格证明书
2014/09/11 职场文书
公民授权委托书范本
2014/09/17 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
测量员岗位职责
2015/02/14 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
法律讲堂观后感
2015/06/11 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL