JDBC—JDBC的SQL注入漏洞
2019-04-30 20:33
441 查看
版权声明:. https://blog.csdn.net/WildestDeram/article/details/89693150
SQL注入漏洞指的是在已知用户名但不知道密码的情况下,还能登陆。
[code]package com.dream.demo4; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; import com.jdbc.dream.utils.JDBCutils; public class JDBCDemo { @Test public void demo() { boolean flag = JDBCDemo.login("aaa' or '1=1", "sadfsfsdf"); if(flag) { System.out.println("登陆成功"); }else { System.out.println("登陆失败"); } } public static boolean login(String username,String password) { Connection conn = null; Statement stat = null; ResultSet res = null; boolean flag = false; try { conn = JDBCutils.getConnection(); stat = conn.createStatement(); // 编写SQL语句 String sql = "select * from user where username ='"+username+"' and password ='"+password+"'"; res = stat.executeQuery(sql); if(res.next()) { flag = true; }else { flag = false; } } catch (Exception e) { } finally { JDBCutils.release(res, conn, stat); } return flag; } }
即使密码乱输入也能够登陆成功,这就是SQL注入漏洞,用户可以在文本框中输入aaa' or '1=1。这样就能随意登陆成功了。
SQL注入漏洞产生的根本原因是字符串拼接。
[code] /** * 避免SQL注入漏洞的方法 */ public static boolean login2(String username,String password) { Connection conn = null; PreparedStatement pre = null; ResultSet res = null; boolean flag = false; try { conn = JDBCutils.getConnection(); // 编写SQL语句 固定了SQL语句的格式 String sql = "select * from user where username ? and password ?"; // 预处理SQL pre = conn.prepareStatement(sql); // 设置参数 pre.setString(1, username); pre.setString(2, password); // 执行SQL res = pre.executeQuery(); if(res.next()) { flag = true; }else { flag = false; } } catch (Exception e) { // TODO: handle exception } finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } conn=null; } if(pre!=null) { try { pre.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } pre=null; } if(res!=null) { try { res.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } res=null; } } return flag; }
相关文章推荐
- JDBC的SQL注入漏洞的解决
- jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
- SQL注入漏洞全接触--入门篇
- SQL注入漏洞全接触--入门篇
- Discuz!7.2 faq.php文件SQL注入漏洞分析及利用实战
- http://subject.csdn.net/SQL-I/SQL注入漏洞全接触2009-08-01 来自:杜倩 [收藏到我的网摘]
- SQL注入漏洞全接触--高级篇
- 最新易想团购系统通杀SQL注入漏洞分析附利用exp
- DedeCMS V5.7sp2最新版本parse_str函数SQL注入漏洞
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
- SQL注入漏洞全接触--入门篇
- 利用SQL注入漏洞登录后台的实现方法
- [转]SQL注入漏洞攻防必杀技
- SQL注入漏洞全接触【3】
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
- 如何预防SQL注入,XSS漏洞(spring,java)
- ASP漏洞+SQL注入的入侵方法
- 参数化SQL语句,防止SQL注入漏洞攻击 分类: ASP.NET 2012-03-09 09:57 2360人阅读 评论(0) 收藏
- Discuz 5.x 6.x 7.x 前台SQL注入漏洞
- (二)SQL注入阶段提升篇----SQL注入漏洞全接触--入门篇(1)