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

原文地址:http://blog.51cto.com/13753419/2298816

时间: 2024-10-15 08:15:03

网站mysql防止sql注入*** 3种方法总结的相关文章

谈谈PHP网站的防SQL注入

SQL(Structured Query Language)即结构化查询语言.SQL 注入,就是把 SQL 命令插入到 Web 表单的输入域或页面请求参数的查询字符串中,在 Web表单向 Web 服务器提交 GET 或 POST 请求时,如果服务器端未严格验证参数的有效性和合法性,将导致数据库服务器执行恶意的 SQL 命令. SQL 注入攻击的过程: (1)判断 Web 应用是否可以进行 SQL 注入. (2)寻找 SQL 注入点. (3)猜解用户名和密码. (4)寻找 Web 系统管理后台入口

MySQL 及 SQL 注入

如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理. 以下实例中,输入的用户名必须为字母.数字及下划线的组合,且用户名长度为 8 到

php网站如何防止sql注入?

网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么   ? 最原始的静态的网站反而是最安全的.今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入. 如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起: Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法: 首先是对服务器的安全设置,这里主要是php+mysql的安全设置和linux

mysql 之sql注入详解

SQL 注入( SQL Injection )攻击是发生在应用程序中的数据库层的安全漏洞.简而言之,是在输入的字符串之中注入 SQL 语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据. SQL 注入已经成为互联网世界 Web 应用程序的最大风险.我们有必要从开发.测试.上线各个环节对其进行防范.以下将介绍 SQL 注入的原理及如何预防 SQL 注入. SQL 注入的原理有

mysql分表的三种方法

mysql分表的3种方法 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下:1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果.在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间.其实这二个是一回事,等待的同时,肯定有sql在执行.所以我们要缩短sql的执行

修改MYSQL最大连接数的2种方法

mysql默认最大连接数是100,增加加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini(windows) 或 my.cnf(linux环境)查找 max_connections=100   修改为 max_connections=1000 服务里重起MYSQL即可 方法二: 客户端登录:mysql -u username -p password 设置新的最大连接数为200:mysql> set GLOBAL max_connections=

网站设计形式提升的五种方法

本文由e良师益友网提供 提到网页设计,最先想到的是当今主流的韩国设计和扁平化设计,当然个性化排版.视频代替文本.全屏大视野.滚动视差.多平台全适应等设计形式已经进入了我们的视野.西方简单.功能性的美学精神”少即是多”这一设计理念攻占了我们的大脑,很多时候,在开始做设计之前脑子里会来回浮现这些风格的设计.怎样在主流设计方式中做出有自己特色的网站呢?我们从以下几点介绍在大环境下提升网站设计形式的方法. 1.赋予民族文化特点在众多的设计师追逐主流风格的同时,民族文化感觉的设计越来越少,不光在国内,在世

删除SQL注入的一些方法总结

sql替换法: declare @myStr nvarchar(500); set @myStr='oa_20121026new.bak</title><style>.alx2{position:absolute;clip:rect(456px,auto,auto,456px);}</style><'; select replace(@myStr,substring(@myStr,charindex('<',@myStr),len(@myStr)),'');

30种mysql优化sql语句查询的方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from