Sine安全-网络安全背后的巨人,提供服务器安全_服务器维护_网站安全解决方案

mysql防止sql注入 3种方法总结

 
        mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以

及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击

有关,那么mysql数据库如何防止sql注入呢?下面我们SINE安全技术针对于这个sql注入

问题总结3种方案去防止sql注入攻击。

 
 
sql注入产生的原因很简单,就是访问用户通过网站前端对网站可以输入参数的地方进行

提交参数,参数里插入了一些恶意参数传入到服务器后端里去,服务器后端并没有对其

进行详细的安全过滤,导致直接进入到数据库里,执行了数据库的sql语句,sql语句可

以是查询网站的管理员账号,密码,查询数据库的地址等等的敏感信息,这个就是sql

注入攻击。

 
 
我们来看下这个网站的代码编写,我们来利用下该如何sql注入攻击:
 
web前端网站通过get_id这个值获取了访问用户输入的参数值,并传递给ID这个值上去

,ID这个值没有对输入的参数进行安全过滤,导致该值里的恶意参数传递到服务器后端

去,紧接着又送到了数据库,进行了数据库的sql语句执行。一般都是参数拼接而成的

sql语句,当用户提交一些逗号之类的and 1=1等等的字符时就会执行sql语句。

 
 
目前我们SINE安全了解到的sql注入漏洞分5种,第一个就是数据库联合查询注入攻击,

第二种就是数据库报错查询注入攻击,第三种就是字符型数据库注入攻击,第四种是数

据库盲注sql注入攻击,第五种是字符型注入攻击。我们来简单的介绍下着几种攻击的

特征以及利用方式,才能更好的了解sql注入,了解后才能更好的去防止sql注入攻击。

 
 
mysql 联合查询数据库注入攻击是采用的union语句,以及使用select语句进行的查询,

去除一些查询语句的重复行进行sql注入的攻击。数据库报错查询注入攻击是采用的数

据库报错类型,判断数据库的错误点,可以使用order by来查询报错,或者使用floor()

来进行报错查询,floor报错的原理就是采用的group bu与rand函数同时进行使用的时

候,计算多次出现的错误导致。

 
字符型sql注入,是判断数据库的数据是字符型还是数字型,最简单的一个方法就是使

用单引号去安全测试,单引号闭合就是字符型的sql注入。数字型就很简单了,通过输

入数字值对其判断,and 1=1 \and 1=2来观察返回来的网站结果是不是正常的就知道了。

 
 
那么mysql该如何防止sql注入?我们通过以下三种方法进行防治sql注入
 
1.开启php的魔术模式,,magic_quotes_gpc = on即可,当一些特殊字符出现在网站前

端的时候,就会自动进行转化,转化成一些其他符号导致sql语句无法执行。

 
 
2.网站代码里写入过滤sql特殊字符的代码,对一些特殊字符进行转化,比如单引号,

逗号,*,(括号)AND 1=1 、反斜杠,select union等查询的sql语句都进行安全过滤

,限制这些字符的输入,禁止提交到后端中去。

 
 
3.开启网站防火墙,IIS防火墙,apache防火墙,nginx防火墙,都有内置的过滤sql注

入的参数,当用户输入参数get、post、cookies方式提交过来的都会提前检测拦截。
分享: