JDBC的SQL注入漏洞
1.概念:
- 利用sql语句的漏洞来对系统进行攻击,导致数据泄露
2.案例演示
数据库登录表:
模拟登录代码【输入正确的用户名和密码才能打印出用户信息】
public class SQL注入 {public static void main(String[] args) {login( " 'or '1=1", "123456'or '1=1");//login("张三","123456");//select * from login where name=' 'or '1=1' AND password ='123456'or '1=1'}//登录业务public static void login(String username,String password){Connection conn =null;Statement stmt =null;ResultSet rs =null;try {conn = JdbcUtils.getConnection();stmt = conn.createStatement();String sql = "select * from login where name='"+username+"' AND password ='"+password+"'";//System.out.println(sql);rs = stmt.executeQuery(sql);while (rs.next()){System.out.println(rs.getString("Name"));System.out.println(rs.getString("password"));}} catch (SQLException e) {e.printStackTrace();}finally {JdbcUtils.close(conn,stmt,rs);}}
}
-----------------------------------------------------------------------------------
login("张三","123456");展示结果:
张三
123456和login( " 'or '1=1", "123456'or '1=1");展示结果:
张三
123456
李四
654321
3.SQL注入漏洞的原因
- 使用Statement对象执行SQL时,如果SQL中拼接的变量包含了SQL关键字,那么就会出现SQL注入漏洞
- 如;上面的登录案例 login( " 'or ‘1=1", “123456’or '1=1”);传入的参数进行后台的sql拼接时就会变成select * from login where name=’ 'or ‘1=1’ AND password ='123456’or ‘1=1’,则导致输入不正确的参数,所有信息都被打印出来
4.SQL注入漏洞的解决办法
使用PreparedStatement对象代替Statement对象执行SQL,该对象可以预编译SQL语句,固定SQL的格式和关键字,用?占位符表示传递的数据,后期设置数据即可
【PreparedStatement为Statement的子类】PreparedStatement的使用
【第一步】:使用Connection对象获取PreparedStatement对象预编译sql
【第二步】:如果SQL中有几个?占位符,那么就设置几个参数。
【第三步】:调用executeQuery()或者executeUpdate()方法执行SQL,但是不用再传递SQL。
//3 创建执行SQL的对象
pstmt = connection.prepareStatement("insert into student values(null,?,?,?)");
//有几个?就设置几个参数
pstmt.setString(1,stu.getName());
pstmt.setInt(2,stu.getAge());
pstmt.setString(3,stu.getBirthday());
//4 执行SQL得到结果
count= pstmt.executeUpdate();
JDBC的SQL注入漏洞相关推荐
- JDBC的SQL注入漏洞分析和解决
SQL注入漏洞分析 SQL注入漏洞解决 需要采用PreparedStatement对象解决SQL注入漏洞.这个对象将SQL预先进行编译,使用?作为占位符.?所代表内容是SQL所固定.再次传入变量(包含 ...
- 预处理prepareStatement是怎么防止sql注入漏洞的?
序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...
- 浅析Java代码审计中的SQL注入漏洞
浅析Java代码审计中的SQL注入漏洞 1.注入漏洞简介 2.SQL注入漏洞简介 3.JDBC拼接不当造成SQL注入 第一关:使用Statement 第二关:使用PrepareStatement 4. ...
- SQL 注入漏洞详解
[渗透测试实用手册]SQL注入漏洞 漏洞名称 SQL注入漏洞 漏洞地址 漏洞等级 高危 漏洞描述 SQL 注入漏洞是指攻击者通过把恶意的 SQL 语句插入到网站的输入参数中,来绕过网站的安全措施,获取 ...
- 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...
刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...
- SQL注入漏洞的检测与防范技术
提 要 本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词 SQL注入漏洞 检测 防范技术 引 言 近几年来随着计算机网络和WEB技术的飞速 ...
- Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)
漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697mod_accounting是Apache 1.3.x上的流 ...
- guestbook.php注入,TinyGuestBook 'sign.php'多个SQL注入漏洞
发布日期:2012-09-23 更新日期:2012-10-04 受影响系统: TinyGuestBook TinyGuestBook 描述: ----------------------------- ...
- thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...
最新文章
- Django 上传图片和Admin站点5.2
- Dialog 带白色的边的处理方法
- html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码
- java windows wrapper_Java Service Wrapper 使用(windows)
- asp.net 页面中点击按钮后无反应的解决方法
- NYOJ542-试制品
- 使用Spring整合Quartz轻松完成定时任务
- ACL 2021 | 基于依存句法驱动注意力图卷积神经网络的关系抽取
- mysql与Pdo_PDO和MySQLi区别与选择?
- ORACLE数据库触发器
- sqlserver查看被锁表、解锁
- 一只青蛙跳向三个台阶_在藏区流传的青蛙王子的故事
- CSS和HTML的基础知识(一)——HTML常用标签的简介及用法
- 算法:First Missing Positive(求缺失的第一个正整数)
- lg手机历史机型_lg手机大全【详细介绍】
- java基于Springboot+vue的鲜花销售商城网站
- CGAL学习记录——点云密度计算
- Python3图片中竖排文字
- 移动优先和桌面优先的状态
- 嵌入式Linux小项目之图片编解码播放器(5)
热门文章
- [APIO2018] New Home 新家(线段树,二分答案,离散化)
- Codeforces 1065 E. Side Transmutations
- 2020CCPC威海
- CF788789(div1div2)
- YBTOJ:魔法数字(数位dp)
- P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】
- P2900-[USACO08MAR]Land AcquisitionG【斜率优化】
- P1311,jzoj3025-选择客栈【统计】
- 2018/7/12-纪中某C组题【jzoj4272,jzoj4273,jzoj4274】
- 【树链剖分】LCA(P4211)