栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

演示Sql注入,并且用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

演示Sql注入,并且用

在MySql中新建一个用户表user,存入用户和密码

import java.sql.*;

//演示SQL注入
public class JDBCDEMO4 {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
    //   Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        //如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
        String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
        String username="root";
        String password="20020630";
        Connection conn=DriverManager.getConnection(url,username,password);

        String name="张三";//用户的账号
        String pwd="1234";//用户的密码
        //3.定义sql

        String sql="select * from user where name='"+name+"'and pwd='"+pwd+"'";
        System.out.println(sql);

        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        if(resultSet.next()){
            System.out.println("登录成功");

        }
        else {
            System.out.println("登录失败");
        }

        //7.释放资源
        statement.close();
        conn.close();

    }
}

 随便写一个账号

密码改为

'or '1'='1
import java.sql.*;

//演示SQL注入
public class JDBCDEMO4 {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
    //   Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        //如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
        String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
        String username="root";
        String password="20020630";
        Connection conn=DriverManager.getConnection(url,username,password);

        String name="ddwqdsdasd";//用户的账号
        String pwd="'or '1'='1";//用户的密码
        //3.定义sql

        String sql="select * from user where name='"+name+"'and pwd='"+pwd+"'";
        System.out.println(sql);

        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        if(resultSet.next()){
            System.out.println("登录成功");

        }
        else {
            System.out.println("登录失败");
        }

        //7.释放资源
        statement.close();
        conn.close();

    }
}

 此时的sql语句变为了显示能够成功登录


使用PrepareStatement防止sql的注入

import java.sql.*;

//PrepareStatement
public class JDBCDEMO5 {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
    //   Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        //如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
        String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
        String username="root";
        String password="20020630";
        Connection conn=DriverManager.getConnection(url,username,password);

        String name="sdadsadsadasd";//用户的账号
        String pwd="'or '1'='1";//用户的密码
        //3.定义sql

        String sql="select * from user where name=? and pwd=?";
        System.out.println(sql);

        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1,name);
        statement.setString(2,pwd);
        ResultSet resultSet = statement.executeQuery();


        if(resultSet.next()){
            System.out.println("登录成功");

        }
        else {
            System.out.println("登录失败");
        }

        //7.释放资源
        statement.close();
        conn.close();

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/919946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号