案例说明什么是SQL注入


前言

本文会有具体的例子解释什么是SQL注入

一、SQL注入是什么?

百度百科是这么说的:SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 嗯,好像看懂了也好像没看懂?那我给你来个例子解释一下。

二、举例

假设我们要做一个登录功能 需要用户输入用户名(username)和密码(password) 我们获取到用户输入的username和password是不是就可以向后端发送请求了 能想到最简单的sql就是:

查找user表中username和password都与用户输入的username、password一致的数据

String sql = "select * from user where username = "+username+" and password = "+password+"";

假设用户输入: 张三 123456’or’1’=‘1’ SQL语句会被曲解成什么样子?

查找user表中username和password都与用户输入的username、password一致的数据
或者1=1(1=1代表真,或操作是有真为真的,所以不管你用户名和密码对不对都会查找成功)
select * from user where username = 张三 and password =123456or1=1;

因为有or 1=1的存在,所以你不管账号和密码是什么都能登录成功

三、总结

利用开发者对输入约束的不严谨,通过输入特殊值导致SQL语句被修改曲解的操作就是SQL注入。

经验分享 程序员 微信小程序 职场和发展