域名论坛

快捷导航 积分商城 域名联盟 域名资讯 域名交易 域名注册 论坛首页

登录 注册

搜索
chungeng.com春耕村名 云定位 广告shengwu.net生物点开看看又不会怀孕广告apm.com.cnapm点开看看又不会怀孕广告DZFP.net→18008.shop.ename.com【电子发票】 广告TMALL11.cn→18008.shop.ename.com【天猫双11】 广告ningmi.com宁米 参考小米不计成本清仓广告云解析放价啦不止五折入门版88元广告
周最佳版主
afen.com阿芬 四字母双拼2.5w广告wangzao.com网造 网络制造made in internet广告TaoBao4S.com→18008.shop.ename.com【淘宝4s店】 广告v78.ccj78 p78 n78 a78三杂促销 全部标价广告hucun.com虎村 狐村 互存互联网第一村广告dourong.com抖融 抖音金融网红米 特价中广告米帮积分商城礼品兑不停积分抽大奖啦广告
周最佳会员
查看: 2171|回复: 0

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

[复制链接]
发表于 2018-8-6 15:50 | 显示全部楼层 |阅读模式
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(多版本并发控制)来提高并发的性能(多版本只是解决不可重复读问题,巴黎圣母院读书笔记(http://www.simayi.net/dushubiji/6382.html)心得感悟,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题),自身也做了一些优化,比如:建立自适应索引,加快查询速度;采用可预测性读磁盘数据;增加了加快插入操作的插入缓冲区
索引:InnoDB的主索引采用的是**索引,也就是将数据放在索引上;MyIsam的索引采用的是非**索引,只是讲数据的地址放在索引上
查询:如果需要频繁的查询数据的话,MyIsam的效率比InnoDB高;如果需要经常执行插入、删除等操作的话,则优先选择InnoDB
查询行数:select count(*) from table --->MyIsam内部保存了行数,可以直接拿到行数,而InnoDB则需要扫描全表;如果查询语句里面包含where条件的话,则两个存储引擎的效率一样,都需要扫描全表

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|联系我们|查询网|域名交易平台|域名管理平台|合作业务Q:1960546765|域名门户

GMT+8, 2018-12-14 06:50 , Processed in 0.067206 second(s), 20 queries . 闽ICP备09007125号-9 闽公网安备35020302000120号 ghs

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表