安全漏洞--SQL注入

SQL:Structured Query Language,结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言。

SQL注入(SQL injection)

一、SQL注入原理

1、原理

SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令。

它是利用现在已有的应用程序,将SQL语句插入到数据库中执行,执行一些并非按照设计者意图的SQL语句。

产生原因:

产生原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当做SQL语句的一部分执行。从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)

2、常见类型

①没有正确过滤转义字符:

二、SQL注入步骤

比如在一个登录界面,要求输入用户名和密码:

可以这样输入实现免帐号登录:

用户名: ‘or 1 = 1 –

密 码:

点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)

这是为什么呢? 下面我们分析一下:

从理论上说,后台认证程序中会有如下的SQL语句:

String sql = "select * from user_table where username=

’ “+userName+” ’ and password=’ “+password+” '";

当输入了上面的用户名和密码,上面的SQL语句变成:

SELECT * FROM user_table WHERE username=

‘’or 1 = 1 – and password=’’

分析SQL语句:

条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;

然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。

三、SQL注入实战

四、如何防御SQL注入

 

posted @ 2022-07-21 13:49  lllwy  阅读(9887)  评论(0编辑  收藏  举报