MySQL用的不好,后果很严重

中科白癜风公认好口碑医院 http://www.bdfyy999.com/

只要学过计算机知识的人都会知道有数据存储这一知识体系,学习好数据存储的原理很多问题都会迎刃而解,不管是任何事物,只要你能了解它的根本那它就没有你想象中那么难。一个产品不可能十全十美,MySQL也不例外,在这个行业里面听到最多的一句话就是:哟,又在写bug了!这句话听起来不是很舒服但的确就是这样子?如果你有谁写代码没出现过bug,我觉得他绝对是神不是人。Monty在写这个数据库也会出现过bug。这个数据库存在着安全性能问题。

MySQL注入攻击就是一个典型的例子,啥叫MySQL注入攻击呢?SQL注入攻击就是通过把SQL语句命令插入到Web表单进行提交或者其他请求进行提交,以一些不规范的输入达到欺骗服务器执行恶意信息以达到登录系统的操作。每个用户的想法都是很独特的,你让他按照规范来走,他偏偏就不按你的想法去走。SQL本身没有校验用户所输入的内容,这时候如果程序员没有进行一些验证的话就会出现一些不可描述的操作,也就是大家所遇见的漏洞,不是SQL本身有问题而是写代码的人忽略没考虑到的问题!bug千千万万,出现一种就要你命三千。

一个简单的例子代码:selectuserfromdatabasewhereusername=adminandpassword=ycx;这就是一个简单的查询语句,在程序里面如果这条语句判断为真的话就会执行通过,也就是你们所熟悉登录操作,程序永远都是认数据不认人。攻击者都输入:用户名为:aor1=1—,密码为:任何数据或者空白,点击登录操作,这时候就会执行程序里面的SQL语句,selectuserfromdatabasewhere=a。为啥后面那个andpassword=ycx没有了呢?这是因为aor1=1—这个”—“把后面语句都消除了。这个时候如果在运行程序就会判断为ture这时候就可以授权访问系统直接为所欲为。这就是我们经常谈到的安全性问题。

解决方法。把sql语句的模板(变量采用占位符进行占位)发送给mysql服务器,mysql服务器对sql语句的模板进行编译,编译之后根据语句的优化分析对相应的索引进行优化,在最终绑定参数时把相应的参数传送给mysql服务器,直接进行执行,节省了sql查询时间,以及mysql服务器的资源,达到一次编译、多次执行的目的,除此之外,还可以防止SQL注入问题。

如果你有更好的办法或者对于MySQL有更深层次的理解可以交流交流,俺不胜感激。如你也喜欢技术类或者唠嗑的话,


转载请注明:http://www.aierlanlan.com/cyrz/2093.html