织云等待中...

5.17总结

package com.mf.jdbc;

import org.junit.Test;

import java.sql.*;

/**

  • 登录逻辑
    */

public class JDBCDemo1 {
@Test
public void testPrepareStatement() throws Exception {
String url = "jdbc:mysql:///test?useSSL=false";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

    //接收用户输入的用户名和密码
    String name = "zhangsan";
    String pwd = "' or '1' = '1";

    //定义sql
    String sql = "select * from tb_user where username = ? and password = ?";

    //获取pstmt对象
    PreparedStatement pstmt = conn.prepareStatement(sql);

    //"?"不能执行,所以设置?的值
    pstmt.setString(1, name);
    pstmt.setString(2, pwd);

    //执行sql
    ResultSet rs = pstmt.executeQuery();

    //判断登陆是否成功
    if (rs.next()) {
        System.out.println("登陆成功");
    } else {
        System.out.println("登陆失败~");
    }

    //释放资源
    rs.close();
    pstmt.close();
    conn.close();
}


/**
 * 演示sql注入
 */
public void testLogin_inject() throws Exception {
    String url = "jdbc:mysql:///db1?useSSL=false";
    String username = "root";
    String password = "123456";
    Connection conn = DriverManager.getConnection(url, username, password);

    //接收用户输入的用户名和密码
    String name = "zegcxbdb";
    String pwd = "' or '1' = '1";

    //定义sql
    String sql = "select * from tb_user where username = '" + name + "' and password = '" + pwd + "'";

    Statement stmt = conn.createStatement();

    ResultSet rs = stmt.executeQuery(sql);

    if (rs.next()) {
        System.out.println("登陆成功");
    } else {
        System.out.println("登陆失败~");
    }

    rs.close();
    stmt.close();
    conn.close();
}

}

posted @ 2023-05-17 17:18  奉禾  阅读(14)  评论(0)    收藏  举报