什么是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日内与变化吧联系。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论