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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

Linux系统调用过程

1 系统调用的作用 系统调用是操作系统提供给用户(应用程序)的一组接口,每个系统调用都有一个对应的系统调用函数来完成相应的工作。用户通过这个接口向操作系统申请服...

59170
来自专栏维C果糖

史上最简单的 MySQL 教程(三十九)「事务(下)」

事务原理:在事务开启之后,所有的操作都会被临时存储到事务日志,事务日志只有在收到commit命令之后,才会将操作同步到数据表,其他任何情况都会清空事务日志,例如...

412100
来自专栏乐沙弥的世界

SQL server 2014 内存表特性概述

12920
来自专栏潇涧技术专栏

How to get performance data in Android

读取文件节点/proc/loadavg,分别是1min/5min/15min内CPU的负载情况。 读取方式的代码示例:

11020
来自专栏小狼的世界

Curl操作Elasticsearch的常用方法

Elasticsearch对于文档操作,提供了以下几种API,本文就说明如何使用curl方式来调用这些API。

17220
来自专栏雪胖纸的玩蛇日常

54.1 怎样才算学会django? 知道这28个知识点才算会django2

25850
来自专栏Spring相关

Tomcat改端口号;修改访问路径,以及配置Context 标签以后Tomcat启动不了

docBase:war包的名称(注意 这里如果找不到相应的war包,tomcat启动不了)

37820
来自专栏菩提树下的杨过

mybatis 3.x 缓存Cache的使用

mybatis 3.x 已经支持cache功能了,使用很简单,在mappper的xml文件里添加以下节点: 1 <mapper namespace="com....

237100
来自专栏电光石火

springboot整合websocket实现消息推送

69530
来自专栏李家的小酒馆

Hiberante知识点梳理

Hibernate简介 Hibernat是一个ORM(关系映射)框架,对JDBC访问数据库的操作进行了简化,并且将数据库表中的字段和关系映射为对象,简化了对数据...

20700

扫码关注云+社区

领取腾讯云代金券