IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【计算机网络】Web应用的安全问题——SQL注入原理及防御 -> 正文阅读

[大数据]【计算机网络】Web应用的安全问题——SQL注入原理及防御

SQL注入原理及防御


一、SQL注入原理

1.什么是SQL注入?

因为基本上每一个Web应用底层都需要使用数据库来保存所需的各种数据,与数据库交互的方式就是程序生成并向数据库提交一些SQL语句来完成数据的CRUD操作

那么一旦这些SQL语句被恶意篡改、被控制,攻击者在原有SQL语句上拼接上一些关键字,从而改变该SQL语句的愿意,从而使得SQL语句经数据库操作后变成攻击者想要达到的效果,比如读取到攻击想要知道的信息、修改某些数据。最严重情况下,攻击者可以利用SQL注入读取甚至修改数据库中所有数据——这就是SQL注入

现实中发生过很多案例,如利用SQL注入修改管理员账户、密码,如家的后台系统数据库整个被拖库,导致用户信息泄露

2.SQL注入原理

用一个简单的例子:如以下为某个网站的用户登录场景
在这里插入图片描述
假设该网站登录校验的底层SQL语句就是:

select * from user where username='用户输入' and password='用户输入'

那么返回数据count>0就代表存在该用户,否则不存在

若此时我们输入的用户名为:‘or’ 1=1
那么会导致什么结果呢?
此时SQL语句变为:

select * from user where username='' or '1=1' and password='用户输入'

where后面的查询条件就变成了用户等于空,或者1=1,1=1为恒等式,有了1=1,后面语句也就都没有了意义,此时会查询到所有用户数据,则返回的count自然就>0,导致登录成功


二、SQL注入的危害

除了以上例子外,还有如:
(1)SQL盲注,可以探知数据库的具体结构,为进一步攻击做准备
(2)泄漏数据,尤其是机密信息、账户信息
(3)取得更高权限、管理员权限,来修改表数据甚至内部结构


三、SQL注入的防御

了解了SQL注入攻击的原理,防御其实是很简单的

参数化查询

参数化查询是对SQL注入的根本性的防御,也称预处理语句:
1.通过指定查询结构,在用户输入的部分预留占位符如"@"
2.然后指定占位符内容(即将用户输入的内容作为参数传进来)

select * from user where username=@UserName and password=@PassWord;
UserName = "用户输入";
PassWord = "用户输入";

这样即使输入’or’ 1=1,也会认为是用户输入的实质内容,不会被当作是SQL语句的一部分

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:55:11  更:2021-10-04 12:56:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:12:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码