• ADADADADAD

    SQL注入漏洞过程的示例分析[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:27:01

    作者:文/会员上传

    简介:

    代码示例:publicclassJDBCDemo3{publicstaticvoiddemo3_1(){booleanflag=login("aaa'OR'","1651561");//若已知用户名,用这种方式便可不用知道密码就可登陆成功if(fla

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    代码示例:

    publicclassJDBCDemo3{publicstaticvoiddemo3_1(){booleanflag=login("aaa'OR'","1651561");//若已知用户名,用这种方式便可不用知道密码就可登陆成功if(flag){System.out.println("登陆成功");}else{System.out.println("登陆失败");}}publicstaticbooleanlogin(Stringusername,Stringpassword){Connectionconn=null;Statementstat=null;ResultSetrs=null;booleanflag=false;try{conn=JDBCUtils.getConnection();Stringsql="SELECT*FROMuserWHEREusername='"+username+"'ANDpassword='"+password+"'";//此处是SQL注入漏洞的关键,因为是字符串的拼接,会使查询语句变为:SELECT*FROMuserWHEREusername='aaa'OR''ANDpassword='1651561',此查询语句是可得到结果集的,便出现此漏洞stat=conn.createStatement();rs=stat.executeQuery(sql);if(rs.next()){flag=true;}else{flag=false;}}catch(SQLExceptione){e.printStackTrace();}returnflag;}

    解决方法,使用PrepareStatment:

    publicstaticvoiddemo3_1(){booleanflag=login1("aaa'OR'","1651561");if(flag){System.out.println("登陆成功");}else{System.out.println("登陆失败");}}publicstaticbooleanlogin1(Stringusername,Stringpassword){Connectionconn=null;PreparedStatementpstat=null;ResultSetrs=null;booleanflag=false;try{conn=JDBCUtils.getConnection();Stringsql="SELECT*FROMuserWHEREusername=?ANDpassword=?";//使用?代替参数,预先设置好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(SQLExceptione){e.printStackTrace();}returnflag;}}

    使用以上解决办法就无法通过SQL注入漏洞登陆用户成功。

    SQL注入漏洞过程的示例分析.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: sql注入