开发者社区> 网站安全> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

网站mysql防止sql注入攻击 3种方法漏洞修复总结

简介:
+关注继续查看

mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如何防止sql注入呢?下面我们SINE安全技术针对于这个sql注入问题总结3种方案去防止sql注入攻击。

b8407e5b274b4d49b531bef1f49ba4ae.png

sql注入产生的原因很简单,就是访问用户通过网站前端对网站可以输入参数的地方进行提交参数,参数里插入了一些恶意参数传入到服务器后端里去,服务器后端并没有对其进行详细的安全过滤,导致直接进入到数据库里,执行了数据库的sql语句,sql语句可以是查询网站的管理员账号,密码,查询数据库的地址等等的敏感信息,这个就是sql注入攻击。

我们来看下这个网站的代码编写,我们来利用下该如何sql注入攻击:

d718730251c7417c98a97203d6e3f251.jpeg

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函数同时进行使用的时候,计算多次出现的错误导致。

6c7a0e9bedc34e49b65397f1a30d4b9b.gif

字符型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方式提交过来的都会提前检测拦截,也可以向国内专业做网站安全的公司去咨询。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
网站安全
Sinesafe专注于网站安全,服务器安全,解决各类网络安全问题,对代码审计以及漏洞修补安全加固有专业的十年实战经验.官方站点www.sinesafe.com
440
文章
188
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载