web安全之sql注入漏洞

2019-03-04  本文已影响0人  无远弗届_90

概念

通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通俗地讲,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

注入流程简介

注入流程

原理

首先来看一下下面这样一个SQL语句:

"select username,password from user where username = '"+username+"'and password = '"+password+"'"

此SQL语句是根据用户名和密码来从数据库中获取记录,有用户名和密码作为双重验证。如果此时没有对用户输入的username加以判断和字符过滤,将username输入成如下字符:

admin‘ #

那么此时拼接后的完整SQL语句将变为如下形式:

"select username,password from user where username = 'admin' #'and password = '123456'"

我们知道,在MySQL中,#是注释的意思,这样对password的限制就彻底失效了,只要数据库中有admin这条记录,数据库就会有数据返回。这样就背离了我们想要执行目标SQL语句的初衷。这就是典型的SQL注入。简单来说,构成SQL注入漏洞的条件有二:

场景

进行SQL注入的场景很多,一切用户可控输入的地方,都有可能造成SQL注入。

场景

危害

SQL注入漏洞常见且危害性大,具体表现为:

防御措施

上一篇 下一篇

猜你喜欢

热点阅读