mysql中防止sql注入
什么是sql注入
图片来源:百度百科

python 操作mysql产生sql注入问题
不用ORM框架,框架中已经集成了防范sql注入的功能,使用pymysql实践一下:
# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host='127.0.0.1', user='root',password='root',database='oss2_base_test',charset='utf8')
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
proj_id = ""
sql = "SELECT * FROM oss2_base_test.auto_task where proj_id={};".format(proj_id)
# 执行SQL语句
cursor.execute(sql)
result = cursor.fetchall()
print(result)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
上面的sql最终被转为了:sql = "SELECT * FROM oss2_base_test.auto_task where proj_id='146';
符合预期,执行也是没有问题的
sql注入攻击:
sql = "SELECT * FROM oss2_base_test.auto_task where proj_id={};".format("'' or 1=1")
上面语句被转为:"SELECT * FROM oss2_base_test.auto_task where proj_id='' or 1=1;"
这将导致表中所有数据都被读取出来,造成的压力可想而知
我们如果涉及到只取部分数据,用limit限制,看sql注入攻击如何写:
正常查询:sql = "SELECT * FROM oss2_base_test.auto_task where proj_id={} limit 5;".format("146")
最终被转为:sql = "SELECT * FROM oss2_base_test.auto_task where proj_id='146' limit 5;"
sql注入:sql = "SELECT * FROM oss2_base_test.auto_task where proj_id={} limit 5;".format("'' or 1=1#")
最终转化为:sql = "SELECT * FROM oss2_base_test.auto_task where proj_id='' or 1=1 # limit 5;"
在sql中,#表示注释,#后面的语句都不会被执行,自然limit也就失效了,所有的数据都会被查出来
sql注入原理:
传入参数中'' or 1=1# 被当作sql语句执行了,or 后面 1=1使条件永远为真,且# 将limit进行注释,我们当前表就被脱裤了
预防:
不要手动进行拼接sql语句,execute() 提供了自动拼接功能,并进行了sql注入防范机制
替换为:
proj_id = "'' or 1=1 #"
sql = "SELECT * FROM oss2_base_test.auto_task where proj_id=%s limit 5;"
cursor.execute(sql,(proj_id,))
mysql中防止sql注入的更多相关文章
- MySQL中关于SQL注入的相关需要的基础知识
零.绪论: 文章部分整理来源于公司同事,特此鸣谢!!! 一.关于注入点在KEY上的注入: 我们来看一个查询,你的第一个字段是过滤器(filter)第二个字段是查询的关键字,例如查询ip == 1.2. ...
- 在php中防止SQL注入的方法
摘要:我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行 php能够更安全.整个PH ...
- Python中防止sql注入的方法详解
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...
- Django中的sql注入
Django中防止SQL注入的方法 方案一总是使用Django自带的数据库API.它会根据你所使用的数据库服务器(例如PostSQL或者MySQL)的转换规则,自动转义特殊的SQL参数.这被运用到了整 ...
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- 【原创】6. 在MYSQL++中实现SQL语法中的NULL
这次要说明的是在MYSQL++中为了实现SQL中的NULL而做出的一系列的举措.我的感觉是Null<T, B>类型通常出现在SSQLS和template Query中比较多. 1. 什么是 ...
- python之MySQL学习——防止SQL注入
python之MySQL学习——防止SQL注入 学习了:https://www.cnblogs.com/xiaomingzaixian/p/7126840.html https://www.cnblo ...
- Mysql中的sql是如何执行的 --- 极客时间学习笔记
MySQL中的SQL是如何执行的 MySQL是典型的C/S架构,也就是Client/Server架构,服务器端程序使用的mysqld.整体的MySQL流程如下图所示: MySQL是有三层组成: 连接层 ...
随机推荐
- (转)VSCode调试go语言出现:exec: "gcc": executable file not found in %PATH%
原文:https://www.cnblogs.com/zsy/p/5958170.html 1.问题描述 由于安装VS15 Preview 5,搞的系统由重新安装一次:在用vscdoe编译go语言时, ...
- Python的函数, 返回值, 参数
1. 函数 函数是对功能的封装 语法: def 函数名(形参): 函数体(代码块,return) 调用: 函数名(实参) 2. 返回值 return:在函数执行的时候, 遇到return 就直接返回, ...
- Tensorflow教程(2)Tensorflow的常用函数介绍
1.tf.constant tf.constant用来定义一个常量,所谓常量,广义上讲就是“不变化的量”.我们先看下官方api是如何对constant函数来定义的: tf.constant( valu ...
- 剑指offer第二版-8.二叉树的下一个节点
描述:给定一棵二叉树和其中的一个节点,找出中序遍历序列的下一个节点.树中应定义指向左节点.右节点.父节点的三个变量. 思路: 1.如果输入的当前节点有右孩子,则它的下一个节点即为该右孩子为根节点的子树 ...
- Skyline WEB端开发5——添加标签后移动
针对于标签或者模型,在skyline上可以进行移动.可以让一个模型可以像无人机似的飞行,或者描述从一个点到另一个点的飞行轨迹. 话不多说,直接上干货. 第一步 添加标签 参考网址:https://ww ...
- 浅谈MQTT
一.什么是MQTT MQTT的全称是“ Message Queuing Telemetry Transport”,即消息队列遥测传输,是一种基于订阅/发布模式的应用层协议,而http是一种基于rest ...
- Fedora dnf配置
1.在配置文件/etc/dnf/dnf.conf中加入: fastestmirror=true keepcache=true 这样下载安装软件就快多了. 2.dnf常用命令 检查并升级可用软件包: $ ...
- ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询
一.复合查询 1.在ElasticSearch中,有Query和Filter两种不同的Context.Query Context进行了相关性算分,Filter Context不需要进行算分,同时可以利 ...
- 【超详细】vultr(CentOS7)+LNMP+WordPress 搭建个人博客
心血来潮想搭建个人博客,我的vps只用来搭ss未免太过浪费 在这里记录一下搭建个人博客的历程 0x00 写在前面 why vultr: 优点:便宜. 性能优良.按时间计费(不用包年 学生党的福音).稳 ...
- Windows下ElasticSearch的Head安装及基本使用
前段时间,有一朋友咨询我,说es的head插件一直安装失败,为了给朋友解惑,自己百度博文并实践了一番,也的确踩了些坑,但我给爬了起来.今天就来分享下实践心得并跳过的坑. ElasticSearch 是 ...