SQL注入

Posted 沙弥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入相关的知识,希望对你有一定的参考价值。

sql注入定义:

用户可控参数中注入sql语法,破坏原有sql结构,到达编写程序之外结果的共计行为。

产生原因:

1、使用字符串拼接的形式构造sql.

2、未对用户可控参数检查过滤接入到sql语句中。

举例万能密码的原理了解sql注入:

所有程序都有一个登陆框,提供给用户输入用户名和密码,我们在拿到用户输入的用户名密码参数进行数据库匹配,找到数据后我们给用户登陆成功,当然我们现在都已经做了防止sql注入的预防,比如在mybatis框架中xml的sql语句中对于用户可控参数传入sql中是我们用的是#{参数}而非${参数},这就是泛指sql注入的一种体现,只不过以前人云亦云,如今却能明白整个过程,我们举一例mysql数据库实现用户登录在没有做防止sql注入时的万能密码:(登录界面就不再画了)

这是我们数据库现有的employee表数据:

按照正常的用户输入account和password,用户传参account = ckx,password = 111传到sql中:

 select * from employee where account = \'ckx\' and password = \'111\';

而当用户输入account = ‘ or 1=1 # ,password 随便输入或者不输入,会产生什么情况?这时如果我们没有做预防sql注入分析:

这种情就可以获取MySQL数据库的employee表的所有用户,因为匹配到数据,程序就会给登录成功!

这就是万能钥匙sql注入的一个简单说明。

关于预防:

1、对用户可控参数保持警惕

2、只有客户端的验证等于没有验证

3、不要把错误信息暴漏给用户

4、sql注入不仅仅可以通过输入框,还有url

5、除了服务器页面错误,还有其他方式获取数据库信息

6、通过软件模拟注入,速度快。

 

以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

sql 注入是啥?

什么叫sql注入,如何防止sql注入

关于SQL注入

Java安全-注入漏洞(SQL注入命令注入表达式注入模板注入)

sql注入一

什么是sql注入如何防止sql注入