SQL注入漏洞危害及漏洞修复方案

时间 : 2020-11-26 14:17:12 浏览量 : 17

Sql注入漏洞是网站漏洞中的高风险漏洞,排名前三,影响范围广。asp、net、PHP、java等编程语言都存在SQL注入漏洞。所谓SQL注入,就是通过在Web表单中插入SQL命令提交或输入域名或页面请求的查询字符串,来欺骗服务器执行指定的SQL语句。具体来说,就是能够通过使用现有的应用程序,将SQL语句注入后台数据库引擎来执行。它可以通过将SQL语句输入到网络表单中,而不是按照设计者的意图执行SQL语句,来获取具有安全漏洞的网站上的数据。


根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者是由不安全的数据库配置或数据库平台的漏洞造成的。后者主要是程序员没有仔细过滤输入,从而执行非法数据查询。基于此,SQL注入的原因通常表现在以下几个方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。


SQL注入漏洞危害及漏洞修复方案


通过以下操作先大概判断是否存在注入点

1.如果参数(id)是数字,测试id=2-1与id=1返回的结果是否相同,如果做了2-1=1的运算,说明可能存在数字型注入。如果要用+号运算的话,因为URL编码的问题,需要把加好换成%2B,如id=1%2B1

2.在参数后面加单引号或双引号,判断返回结果是否有报错

3.添加注释符,判断前后是否有报错,如id=1' --+ 或 id=1" --+ 或id=1' # 或id=1" --+  (--后面跟+号,是把+当成空格使用)

4.有些参数可能在括号里面,如:SELECT first_name, last_name FROM users WHERE user_id = ('$id');所以也可以在参数后面加单双引号和括号,如id=1')  --+ 或 id=1") --+ 或id=1') # 或id=1") --+ 


SQL注入漏洞解决修复方案参考:

1.在底层程序代码中,防止网站被sql注入攻击的最好方法是修复和保护sql漏洞,在代码中添加和过滤一些非法参数,在服务器端绑定变量,规范SQL语句。

2.对于程序代码中的所有查询语句,使用数据库查询语句的标准化API接口,设置语句的参数来过滤一些非法字符,防止用户输入恶意字符并发送给数据库执行sql语句。

3.安全过滤用户提交的参数,比如一些特殊字符(,()*.% #,等等。),并进行字符转义操作,以及编码的安全转换。

4.网站的代码层要尽可能统一。建议使用utf8编码。如果代码不同,一些过滤器将被直接旁路。

5.必须确定网站的数据类型,即数字类型,字符类型为字符类型,数据库中的存储字段类型也设置为ini类型。

6应该对用户的操作权限进行安全限制。普通用户应该只给普通权限,应该释放管理员后台操作权限,尽量减少对数据库的恶意攻击。

7.尽量不要把网站的错误信息返回给客户端,比如一些字符错误和数据库的错误信息,尽量防止泄露给客户端。

8.使用参数化查询接口或在代码级别转义或过滤带入SQL语句的外部参数;

9.对于整数,判断变量是否符合[0-9]的值;也可以检查其他限值的有效性;

10.对于字符串,转义SQL语句的特殊字符(单引号转换为两个单引号,双引号转换为两个双引号)。

11.参数后面跟or 或者and,判断返回结果是否有变化,如1' or 'a'='a  或者and 'a'='a或者1' or 'a'='b或者1' or '1'='2如果返回的正确页面与错误页面都一样,可以考虑时间延迟的方法判断是否存在注入,如  1’ and sleep(5)


SQL注入漏洞危害及漏洞修复方案




标签:SQL注入漏洞危害及漏洞修复方案

上一篇: 网站XSS漏洞解决修复方案

下一篇:

相关新闻
业务咨询及商务合作请联系