MySQL数据库的安全讲义
本文主要给大家介绍MySQL数据库的安全讲义,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在创新互联行业资讯里面关注我的更新文章的。
创新互联专注于企业营销型网站建设、网站重做改版、雁塔网站定制设计、自适应品牌网站建设、成都h5网站建设、商城网站定制开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为雁塔等各大城市提供网站开发制作服务。
其实数据库安全就那点事,SQL注入。现代Web数据安全方面,相当一部分公司其实并不重视数据安全的问题,据国外统计超过一半的网站可能存在SQL注入漏洞。
就说最近的例子,2016年11月30日某某著名公司发送短信邀请本人参加云产品峰会,收到邀请的二维码短信的url,这个url的IP地址就是管理后台就不说了(大家应该知道是谁了,看完本文***他人网站的,自负责任)。在用户名输入框中直接输入 or 1=1 ,连密码都不需要输入,超级管理员验证通过,直达管理员后台。
话说,SQL注入漏洞这个事,能怪谁呢?
能怪整天整宿忙碌于擦屁屁的运维吗?能怪搞数据库的DBA吗?
严格地说,他们都有责任搞好安全这点事。不过,说到本质,还真与他们没有什么关系。
有时候,程序在输入框做好可疑字符过滤,甚至就多加一点逻辑判断,安全就能完全避免的事。但是他们为什么就不做这个检查呢,是人安全意识问题,还是对SQL注入不了解呢?
SQL注入漏洞的本质原因并不是在运维工作层面有多大的疏忽,而是程序员没有做好过滤和逻辑上的问题。为什么?
我们先要明确SQL漏洞***是怎么定义?SQL漏洞***,本质上就是如何充分利用程序的逻辑来为***者完成他们想干的事情。
所以,***们能不能搞,是程序的问题,程序能不被***们当做傻子,叫它干什么事,它就干什么事,甚至有个洞就能干出点东西来。
这才是SQL注入漏洞的利用本质。比如,某些会议门票之类的,捣蛋鬼想要票还不要钱,甚至还想倒卖门票,想登录管理员后台,怎么搞?
这明显非法,大家都不是傻子,这并不是你想登就能登的,对不对?但是总得找出个“傻子”出现才行,而捣蛋鬼又从来不按常规出牌。我们又如何防范这种捣蛋鬼呢?
就登录网站这回事吧,都要输入用户名和密码进行验证,大家皆知的常识。假设这里就只有两个输入框:用户名和密码,那如何绕过这种验证呢?
那我们就先看看绕过用户名和密码验证的原理是什么?当我们输入用户名:hxf,密码是:123,程序会保存到变量中, $uname='hxf',$pass='123'.这时候点击登录,就会把用户名和密码数据提交给程序.
那么被当作傻子的程序是如何进行逻辑判断的呢?我们看看类似如下的过程:
首先执行一个SQL语句,比如sql="selectcount(*) from users where uname=$uname and password=$pass",意思是这是从数据库中查有这个用户名和密码的用户是否存在,然后程序就会根据返回结果进行逻辑判断,如果用户名和密码都匹配,那么返回的结果必然不可能为空,如果不为空,那么就登录通过。
我们咋一看这个判断过程好像也没有什么问题。那我们来看捣蛋是怎么捣蛋的?
直接在用户名的输入框输入:1' or 1='1';# ,密码输入框不需要填写任何字符,直接回车。这样直接验证通过,到达管理员后台,轻松获得web管理员权限,当然还有其它效果一样的输入。
为什么这样可以得到Web管理员权限呢?我们来把动作分解一下。
当捣蛋鬼在用户名输入框输入:1' or 1='1';#,那么传到程序处理加单引号后变成:$uname="'1' or 1='1'",$pass="",这种结果传到SQL语句在数据库中执行就会是这样:select count(*) from userswhere uname='1' or 1='1';# and password="",大家可以执行在一下,这条结果明显把逻辑改变了,结果不可能为空,or的逻辑永远为真,结果不可能为空。非空即为真,管理员登录成功,尤其是表中只有一个管理员的情况更糟糕了。
那么如何防范这种事情呢?这里的输入验证存在很多的漏洞:多个输入框都没有验证是否有输入和有效字符检查。所以防范的办法,一方面是做字符过滤,类似的单引号和SQL关键字等是禁止输入的。当然两个输入框是否输入字符,输入多少个字符,就不应该我来教育程序员了。
综上所述,SQL注入漏洞的本质原因实际上是我们的程序问题,归根结底仍然是人的意识问题,也因此仍然有多很网站存在诸多SQL注入漏洞问题。大多数程序员,运维和DBA其实并不了解其中的注入内幕是什么,《MySQL注入***技术内幕》是以实际SQL注入***为例,如何步步为营掌握SQL注入***,如何针对***实行反制,做好安全的防御。实际上,并非有意教大家***他人网站,而是如何防范自己网站不被他人***。刀是利器,坏人可以做坏事,好人可以防身不给坏人靠近之机。
看了以上关于MySQL数据库的安全讲义,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。
网页名称:MySQL数据库的安全讲义
文章分享:http://myzitong.com/article/geipjc.html