文档章节

SQL数据库常见问题解答及万能密码注入原理讲解[图]

o
 osc_1ee7cxmx
发布于 2018/08/06 15:44
字数 1592
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

SQL数据库常见问题解答及万能密码注入原理讲解[图]
【万能密码】的原理
用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。针对此BBS论坛,当用户登录时,后台执行的数据库查询操作(SQL语句)是【Selectuser id,user type,email From users Where user id=’用户名’ And password=’密码’】
由于网站后台在进行数据库查询的时候没有对单引号进行过滤,当输入用户名【admin】和万能密码【2’or’1】时,执行的SQL语句为【Select user id,user type,email From users Whereuser id=’ admin’ And password=’ 2’or1】。同时,由于SQL语句中逻辑运算符具有优先级,【=】 优先于【and】,【and】 优先于【or】,且适用传递性。因此,此SQL语句在后台解析时,分成两句【Select user id,user type,emall From users Where user id=’ admin Andpassword=’2’ 】和【’1’ 】 两句bool值进行逻辑on运算,恒为TRUE。SQL语句的查询结果为TRUE,就意味着认证成功,也可以登录到系统中。
1.数据库索引失效的场景:
应尽量避免在 where 子句中使用 != 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描;
尽量避免在 where 子句中使用 or 来连接条件
如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引;
like的模糊查询以 % 开头,索引失效;
应尽量避免在 where 子句中对字段进行表达式操作
应尽量避免在 where 子句中对字段进行函数操作
不要在 where 子句中的 “=” 左边进行函数、算术运算或其他表达式运算
不适合键值较少的列(重复数据较多的列)
不符合最左前缀匹配原则(设置了索引A、B、C,然后查找的时候使用索引B、C)

2.使用存储过程的优缺点:
优点:(1)存储过程在第一次使用的时候就进行编译,以后每次使用都不需要重新编译,可以提高数据库的执行速度(2)代码复用性,可以重复使用(3)当对数据库进行复杂操作的时候,可将这些复杂操作用存储过程封装起来,避免进行一条条的sql语句操作,只需要连接一次数据库则可以了
缺点:(1)不便于调试(2)没办法使用缓存
3.为什么MySQL数据库索引选择使用B+树?
二叉树的查找速度较快,取决于树的高度,但由于数据库索引存放在磁盘上,当数据量比较大的时候,当我们利用索引查询的时候,不能把索引全部加载到内存中,能做的就是逐一加载每一个磁盘页,这里的磁盘页对应着索引树的节点,所以应当减少磁盘IO次数。所以B-树(平衡的多路查找树)正可以解决这个问题,虽然在节点上元素较多,比较的次数较多,但由于节点上的元素是加载到内存中进行比较的,速度比较快。
4.B+树相对B-树的优势:
磁盘IO次数更少(B+树非叶子节点上存放key值,不存放data,相比B-树,相同节点能够存放更多的data,也就是说,相同节点的话,B+树的高度可能比B-树低------>针对节点数比较多的情况)
查询性能更加稳定(B+树必须从根节点到叶子节点这条路径,才能找到所需的数据;而B-树可能在非叶子节点上就找到所需的数据)
范围查询更加简便(B+树的叶子节点采用一种 顺序指针,只需要遍历一遍,则可以找到所有的数据,并且查找一定范围内的值也很方便)
5.MySQL日志文件分类
错误日志:记录mysql启动、运行或者关闭时出现错误的信息
查询日志:记录所有对数据库的操作,包括增删查改
二进制日志:记录修改数据或者引起mysql数据变化的sql语句
慢查询日志:记录查询时间超过指定阈值的查询语句
6.MySQL存储引擎MyISAM与InnoDB区别
每个MyISAM在磁盘上存储成三个文件。第一个 文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义;.MYD (MYData)存储数据;.MYI (MYIndex)存储索引;
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB
事务:InnoDB支持事务,MyIsam不支持事务
外键:InnoDB支持外键,MyIsam不支持外键
锁:MyIsam只支持表级锁;InnoDB支持表级锁和行级锁,并且支持MVCC(多版本并发控制)来提高并发的性能(多版本只是解决不可重复读问题,巴黎圣母院读书笔记心得感悟,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题),自身也做了一些优化,比如:建立自适应索引,加快查询速度;采用可预测性读磁盘数据;增加了加快插入操作的插入缓冲区
索引:InnoDB的主索引采用的是聚集索引,也就是将数据放在索引上;MyIsam的索引采用的是非聚集索引,只是讲数据的地址放在索引上
查询:如果需要频繁的查询数据的话,MyIsam的效率比InnoDB高;如果需要经常执行插入、删除等操作的话,则优先选择InnoDB
查询行数:select count(*) from table --->MyIsam内部保存了行数,可以直接拿到行数,而InnoDB则需要扫描全表;如果查询语句里面包含where条件的话,则两个存储引擎的效率一样,都需要扫描全表

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Linux安装redis服务器和部署

Linux安装redis和部署 第一步:下载安装包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 访问https://redis.io/download 到官网进行下载。这里下载最新的5.0.5版本. 第二步:...

osc_3ytpwpyb
26分钟前
23
0
IF函数,根据条件设定输入内容

if函数通常用于条件判断,根据判断结果执行相应命令。 1.函数解释: IF(logical_test, [value_if_true], [value_if_false]) logical_test 必需。 计算结果为 TRUE 或 FALSE 的任何值或表达式...

osc_sumf8h95
28分钟前
9
0
Pytorch自定义dataloader以及在迭代过程中返回image的name

pytorch官方给的加载数据的方式是已经定义好的dataset以及loader,如何加载自己本地的图片以及label? 形如数据格式为 image1 label1 image2 label2 ... imagen labeln 实验中我采用的数据的...

osc_l8u38961
29分钟前
6
0
灯塔

\[love\ and \ share \] 我怎么感觉变成了好东西推荐呢?算了,本来也差不多 还没写完,想到再更 有好看玩的能不能评论一下,qwq 动漫 大多是些国漫,多在\(b\)站、腾讯视频、盗版小网站能够...

osc_dc6pbw3x
30分钟前
17
0
网易首页 」 网易手机 」 正文 苹果超薄触摸显示技术专利曝光:重新定义轻薄

最近,苹果公司的新屏幕专利技术已经曝光。特别是苹果公司的新型超薄触摸技术,它可以降低显示器的结构水平,消除多余的电路,并使屏幕更薄。该专利表明,这项新技术适用于iPhone,iPad,App...

osc_opzpp18v
32分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部