浅谈防SQL注入

幸运草 2020年3月31日21:31:14安全防范评论阅读模式

   什么是SQL?它的原理是什么?又是如何防护的?今天,小编就将针对以上问题与V粉们分享关于一些SQL的知识。 

SQL注入一说,起源于1998年国外安全研究人员(rain forest puppy)在一本由黑客创办的一本杂志phrack上发表,题目为《NT web Technology vulnerabilities(NT web技术漏洞)》。至此,很多研究人员开始研究就细化SQL注入进行攻击的技术。时至今日,仍然还有很多开发人员和安全人员对SQL注入不甚了解。同时,在OWASP TOP10中, SQL注入仍是影响企业运营且较具破坏性的漏洞之一,如2016年的世纪佳缘数据库泄露。不仅如此,如新浪及人人网等媒体站也存在着SQL注入漏洞。那么什么是SQL注入呢?

一、SQL注入的原理

定义:通过把SQL命令用户写入提交的数据中,改变代码原有SQL语句的语义,从而达到控制服务器执行恶意的SQL命令,导致可写入任意SQL语句并执行

例如:应用程序在下面存在l漏洞的SQL语句的构造使用不可信数据:

string query = “ select*from aa where aid =””+request.getParameter(“id”)+””

攻击者在浏览器中将id参数的值改为

100’or‘1’=’1

如:

http://www.a.com/data/User?id=100’or ‘1’=’1

这样查询的语句的意义变成了从aa表中返回所有的记录。

语句变化:

select*from aa where aid =’100’;
select*from aa where aid =’100’or ‘1’=’1’;

二、SQL注入防护

1. 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号与及特殊字符进行转换等。

2. 永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4. 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

5. 应用的异常信息应该给出尽可能少的提示(关闭debug调试模式),最好使用自定义的错误信息对原始错误信息进行包装。

6. 进行站库分离操作,防止网站SQL注入获取到数据。

7. 物理服务器:部署硬件web防火墙(WAF),可有效防止SQL注入等攻击。

8. 云服务器:使用软件防火墙,使用安全可信任的云服务商(自带有云WAF),如XYcloud,阿里云等。

本文来源于:浅谈防SQL注入-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草

发表评论