SQL注入漏洞危害及漏洞修复方案
Sql注入漏洞是网站漏洞中的高风险漏洞,排名前三,影响范围广。asp、net、PHP、java等编程语言都存在SQL注入漏洞。所谓SQL注入,就是通过在Web表单中插入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)
上一篇: 网站XSS漏洞解决修复方案
下一篇:
相关新闻
- 地图标注能做哪些公司,哪些行业需要地图标注 2021-01-15
- 怎么在百度地图添加公司店铺名地址位置 2021-01-04
- 如何在新浪网发布新闻,怎么在新浪新闻投稿 2021-01-04
- 软文代发平台有哪些性价比高的公司 2020-12-25
- 天涯问答推广怎么做?效果如何 2020-12-25
- 建筑建材行业产品网络推广方案方法 2020-12-16
- 企业软文营销发布怎么发效果更好 2020-12-16
- 创建个人百度百科词条的编辑技巧 2020-12-16
- 百度问答推广内容被删的原因 2020-12-16
- 百度问答推广怎么做?自己做还是外包? 2020-12-12
