浅谈防SQL注入
Posted 卓网信息
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈防SQL注入相关的知识,希望对你有一定的参考价值。
什么是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表中返回所有的记录。
(1) 语句变化:
select*from aa where aid =’100’;
select*from aa where aid =’100’or ‘1’=’1’;
(2) 实际案例:
二、SQL注入防护
1. 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号与及特殊字符进行转换等。
2. 永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4. 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5. 应用的异常信息应该给出尽可能少的提示(关闭debug调试模式),最好使用自定义的错误信息对原始错误信息进行包装。
6. 进行站库分离操作,防止网站SQL注入获取到数据。
7. 物理服务器:部署硬件web防火墙(WAF),可有效防止SQL注入等攻击。
8. 云服务器:使用软件防火墙,使用安全可信任的云服务商(自带有云WAF),如XYcloud,阿里云等。
点击阅读更多往期精彩
卓网信息
以上是关于浅谈防SQL注入的主要内容,如果未能解决你的问题,请参考以下文章