vlambda博客
学习文章列表

【Web安全漏洞】- 什么是SQL注入?


 小故事 

● 某个公司有一个员工管理系统,里面存储员工的许多信息,每个员工只要输入自己的工号就可查询自己相关信息。张三是这个公司的一个开发人员,他突发好奇的想输入李四的工号10001是否可以成功查询,结果他失败了,因为系统有工号和身份的互相校验;于是他在工号后面加上了一个' OR 'a'='a,没想到成功返回了数据,他成功获取到了他人的许多敏感信息。



先来看个小视频,简单粗暴地认识一下SQL注入👇

带你了解SQL注入|抖音@翼安研习社


什么是SQL注入

 由于程序员在开发数据库交互程序过程中,没有对用户输入数据进行校验、转义、限制或者处理不当,导致攻击者可以通过输入恶意字符串去非法获取数据库中的数据。


SQL注入危害

 盗取网站的敏感信息

 绕过验证,直接登入网站后台

 进行权限提升等操作


SQL注入条件

 执行数据库交互的数据可以从外部输入或者外部可控

 这些数据并没进行严格的校验、转义、限制等处理

 使用了不能确保安全的数据库操作方法


示例 🌰

String userName = obj.getName();String num= request.getParameter("number");String query = "SELECT * FROM student WHERE name= '" + userName + "' AND number= '" + num + "'";ResultSet rs = stmt.execute(query);

👆左右滑动查看完整代码


分析:

当num的值为 1001' OR 'a'='a,此时的sql语句为:SELECT * FROM student WHERE name= 'zhangsan' AND num = '1001' OR 'a'='a';相当于执行以下语句:SELECT * FROM student

👆左右滑动查看完整代码


防御方式

【Web安全漏洞】- 什么是SQL注入?

如何防御SQL注入



信息收集|代码审计团队

撰稿|代码审计团队

视频|代码审计团队

编辑|虞珍妮

【Web安全漏洞】- 什么是SQL注入?
【Web安全漏洞】- 什么是SQL注入?

翼安研习社

知乎|翼安研习社

抖音|翼安研习社

CSDN|翼安研习社

新浪微博|翼安研习社

【Web安全漏洞】- 什么是SQL注入?

球分享

球点赞

球在看