SQL注入漏洞过程实例及解决方案
网络编程 2021-07-05 14:37www.168986.cn编程入门
这篇文章主要介绍了SQL注入漏洞过程实例及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码示例
public class JDBCDemo3 { public static void demo3_1(){ boolean flag=login("aaa' OR ' ","1651561"); //若已知用户名,用这种方式便可不用知道密码就可登陆成功 if (flag){ System.out.println("登陆成功"); }else{ System.out.println("登陆失败"); } } public static boolean login(String username,String password){ Connection conn=null; Statement stat=null; ResultSet rs=null; boolean flag=false; try { conn=JDBCUtils.getConnection(); String sql="SELECT FROM user WHERE username='"+username+"'AND password='"+password+"'"; //此处是SQL注入漏洞的关键,因为是字符串的拼接,会使查询语句变为SELECT FROM user WHERE username='aaa' OR '' AND password='1651561',此查询语句是可得到结果集的,便出现此漏洞 stat=conn.createStatement(); rs=stat.executeQuery(sql); if(rs.next()){ flag=true; }else{ flag=false; } } catch (SQLException e) { e.printStackTrace(); } return flag; }
解决方法,使用PrepareStatment:
public static void demo3_1(){ boolean flag=login1("aaa' OR ' ","1651561"); if (flag){ System.out.println("登陆成功"); }else{ System.out.println("登陆失败"); } } public static boolean login1(String username,String password){ Connection conn=null; PreparedStatement pstat=null; ResultSet rs=null; boolean flag=false; try { conn=JDBCUtils.getConnection(); String sql="SELECT FROM user WHERE username=? AND password=?"; //使用?代替参数,预先设置好sql格式,就算在输入sql关键字也不会被sql识别 pstat=conn.prepareStatement(sql); pstat.setString(1,username); //设置问号的值 pstat.setString(2,password); rs=pstat.executeQuery(); if(rs.next()){ flag=true; }else{ flag=false; } } catch (SQLException e) { e.printStackTrace(); } return flag; } }
使用以上解决办法就无法通过SQL注入漏洞登陆用户成功。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南