Java代码审计安全篇-常见Java SQL注入

前言:

堕落了三个月,现在因为被找实习而困扰,着实自己能力不足,从今天开始 每天沉淀一点点 ,准备秋招 加油

注意:

本文章参考qax的网络安全java代码审计,记录自己的学习过程,还希望各位博主 师傅 大佬 勿喷,还希望大家指出错误

1.SQL语句参数直接动态拼接

常见的的执行语句为Statement执行SQL语句

例如下面这段代码:

javascript 复制代码
<%  //驱动程序名   
        String driverName = "com.mysql.jdbc.Driver";  
        //数据库用户名   
        String userName = "root";  
        //密码   
        String userPasswd = "root";  
        //数据库名   
        String dbName = "javasqltest";  
        //表名   
        String ID = '1'
        //联结字符串   
        String url = "jdbc:mysql://localhost:3306/" + dbName + "?user="  
                + userName + "&password=" + userPasswd;  
        Class.forName("com.mysql.jdbc.Driver").newInstance();  
        Connection connection = DriverManager.getConnection(url);  
        Statement statement = connection.createStatement();  
        String sql = "SELECT * FROM  people where id = " +ID ;  
        ResultSet rs = statement.executeQuery(sql);  
    %>  

打印出来的结果如图下所示

数据库数据:

我们发现 像这种情况就是由SQL语句参数直接动态拼接成的,这样的话参数ID可控并且可以执行sql语句的拼接,存在明显的SQL注入漏洞

javascript 复制代码
String sql = "SELECT * FROM  people where id = " +ID ;  

我们测试验证 一下 传入参数为

javascript 复制代码
1 and 1= 1

果然存在漏洞,这样就有个严重 的问题 当输入1 or 1 = 1就会打印所有的表的数据 ,造成数据泄露

javascript 复制代码
 1 or 1=1
修复:

预编译处理

哈哈 ,先写到这里 ,剩下的明天在更新 加油啊

相关推荐
AA-代码批发V哥2 分钟前
Math工具类全面指南
java·开发语言·数学建模
wangzhongyudie1 小时前
SQL实战:06交叉日期打折问题求解
数据库·sql
caihuayuan52 小时前
生产模式下react项目报错minified react error #130的问题
java·大数据·spring boot·后端·课程设计
编程、小哥哥2 小时前
Java大厂面试:从Web框架到微服务技术的场景化提问与解析
java·spring boot·微服务·面试·技术栈·数据库设计·分布式系统
界面开发小八哥2 小时前
「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(二)
java·ide·人工智能·java-ee·myeclipse
川石课堂软件测试2 小时前
涨薪技术|0到1学会性能测试第65课-SQL捕获阻塞事件
数据库·sql·功能测试·oracle·性能优化·单元测试·tomcat
找不到、了3 小时前
Spring-Beans的生命周期的介绍
java·开发语言·spring
caihuayuan44 小时前
React Native 0.68 安装react-native-picker报错:找不到compile
java·大数据·sql·spring·课程设计
爱编程的鱼4 小时前
C#接口(Interface)全方位讲解:定义、特性、应用与实践
java·前端·c#
旋风菠萝4 小时前
深入理解Java中的Minor GC、Major GC和Full GC
java·jvm·gc