SQL注入原理及防御
Python孙行者
共 1530字,需浏览 4分钟
· 2021-03-25
SQL注入尤其是字符串型注入尤为明显且容易,下面以登录校验为例简单介绍其原理和防御策略。
登录接口SQL
根据用户名和密码获取用户数据:
sql = """select uid, email, phone from tb_user where username='{username}' and pwd='{pwd}'""".format(username=username, pwd=pwd)
正常情况下的请求体application/json:
{
"username": "ridingroad",
"pwd": "加密后的密码"
}
所得到的SQL:
select uid, email, phone from tb_user
where username='ridingroad' and pwd='加密后的密码'
SQL注入下的请求体
{
"username": "ridingroad' or 1=1#",
"pwd": ""
}
此时得到的SQL将是:
select uid, email, phone from tb_user
where username='ridingroad' or 1=1#' and pwd='加密后的密码'
成功注入的原因:
ridingroad’
和原来的username='{username}'.format(username)
结合
'{username}'.format("ridingroad' or 1=1#")
得到:
username='ridingroad' or 1=1#'
#
后面的sql组成部分变成了注释,失去了原来的and逻辑判断作用
where username='ridingroad' or 1=1#' and pwd='加密后的密码'
且
or 1=1
永远为真
结果:
将会造成用户表所有数据的泄露
SQL注入防御
阻止SQL注入的方法主要是利用现有数据库第三方库完善的防SQL注入的特性,避免重复造轮子
原始SQL情况下
使用%s占位符,利用PyMySQL自带的防注入特性
sql = """select uid, email, phone from tb_user
where username=%s and pwd=%s"""
cursor.excute(sql, (username, pwd))
ORM情况下
SQLAlchemy ORM已经对SQL注入进行了处理,直接使用ORM语法即可,不需要特别处理。
评论
10个高级的 SQL 查询技巧
来源:towardsdatascience.com/ten-advanced-sql-concepts-you-should-know-for-data-science-interviews-4d7015ec74b0👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Jav
小哈学Java
0
乐普心安宝及心电图机,助力安康市搭建“心电一张网”,打通全域“生命线”!
为持续推动胸痛中心建设,助力全民健康,全面提升心血管疾病等急危重症救治能力水平。4月20日,由安康市卫健委主办、安康市中医医院承办的“第七届心血管汉江学术会议暨安康市胸痛中心大会”在高新国际会议中心顺利举行。市人大常委会主任王彪、市政协副主席唐纹、市政府党组成员刘英华等领导亲临现场,受邀参会的中国科
乐普医疗AI
0
每天骑的共享单车是什么通信原理,有人了解过吗?
转自:网络我们经常骑的共享单车到底是什么通信原理,有人了解过吗?现在就带大家了解下。一、智能车锁共享单车最核心的硬件是智能车锁,主要用于实现控制和定位功能。车锁内集成了嵌入式芯片(通信模块),GPS模块和物联网SIM卡。智能锁制造商通过在锁内集成带有独立号码的SIM卡,通过2G、3G、4G网络,与云
菜鸟学Python
1
面试官:谈谈前端路由的实现原理【hash&history】
哈喽,大家好我是考拉🐨。今天我们来聊一聊前端路由。当谈到前端路由时,指的是在前端应用中管理页面导航和URL的机制。前端路由使得单页应用(Single-Page Application,SPA)能够在用户与应用交互时动态地加载不同的视图,而无需每次都重新加载整个页面。在前端开发中,常用的前端路由库有很
程序员成长指北
10
图解 SQL 执行顺序,通俗易懂!
来源:blog.csdn.net/weixin_44141495/article/details/108744720/数据的关联过程from&join&wheregroup byhaving&whereselectorder bylimit这是一条标准的查询语句:图片这是我们
Java专栏
10
无任务学习及在机器人任务和运动规划中的应用
大数据文摘授权转载自中国人工智能学会作者:张宪琦,范晓鹏摘 要:本文提出了无任务学习的方法,阐述了其与现有方法(包括自监督学习、迁移学习、模仿学习、强化学习)的区别与联系;然后,介绍了无任务学习在机器人任务和运动规划领域的应用,并分析了无任务学习在该领域的优势和主要研究难点。最后,对无任务学习在机器
大数据文摘
0
8种专坑运维的 SQL 写法,性能降低100倍,您不来看看?
来源:机器之心1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type,name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT *FROM opera
良许Linux
0
有了这 4 款脚本工具, 再也不怕写烂 SQL了!!!
来自:toutiao.com/a6691523026984370699mysqltuner.pltuning-primer.shpt-variable-advisorpt-qurey-digest对于正在运行的mysql,性能如何,参数设置的是否合理,账号设置的是否存在安全隐患,你是否了然于胸呢?俗
良许Linux
0