首页 > 数据库 >JDBC-API详解-PreparedStatement-SQL注入演示

JDBC-API详解-PreparedStatement-SQL注入演示

时间:2023-06-15 10:11:38浏览次数:42  
标签:username JDBC String SQL stmt API sql import password

 

 

 

package Test;

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class JDBCdemo5_UserLogin {
    /*
    *演示用户登录
    * */
    @Test
    public void testUserLogin() throws Exception {
        //1.注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url = "jdbc:mysql:///test?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);

        //接收用户输入用户名和密码
        String name="zhangsan";
        String pwd="123";

        String Sql=" select * from tb_user where username='"+name+"' and password='"+pwd+"' ";

        //获取stmt对象
        Statement stmt = conn.createStatement();

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

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

        //7.释放资源
        rs.close();
        stmt.close();
        conn.close();
    }
    /*
     *演示sql注入
     * ' or '1' = '1
     *
     * select * from tb_user where username='dawdsan' and password='' or '1' = '1'
     * 通过输入的语句来修改事先定义好的sql语句本身的意义
     * */
    @Test
    public void testlogin_Inject() throws Exception {
        //1.注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url = "jdbc:mysql:///test?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);

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

        String Sql=" select * from tb_user where username='"+name+"' and password='"+pwd+"' ";
        System.out.println(Sql);

        //获取stmt对象
        Statement stmt = conn.createStatement();

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

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

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

}

 

标签:username,JDBC,String,SQL,stmt,API,sql,import,password
From: https://www.cnblogs.com/Karl-hut/p/17482102.html

相关文章

  • SpringBoot+druid+dynamic+clickhouse+mysql实现读写分离
    背景:clickhouse+mysql实现读写分离1.配置mysql2.安装clickhouse3.使用可视化工具连接clickhouse4.创建clickhouse的数据库并连接mysql5.SpringBoot+druid+dynamic配置多数据源实现读写分离一.背景由于系统数据量过大,查询条件自定义过多,mysql在查询时响应太慢,所以使用cli......
  • Postgresql中的表结构和数据同步/数据传输到Mysql
    场景Postgresql中的某个表,需要连同表结构以及表数据同步一次到Mysql数据库中。一种方式是在Postgresql中将表sql导出,然后修改sql文件语法,再导入到mysql中。但是这种方式过于复杂,可以借助于Navicat等工具。如果是使用Navicat进行结构同步和数据同步时,需要两边是同类型的数据库......
  • JDBC-API详解-ResultSet2
     packageTest;importorg.junit.Test;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importjava.util.TimerTask;publicclassJDBCdem......
  • SQL Server常用指令(全局变量 + 判定 + 循环 + 分类统计)
    原文:https://blog.csdn.net/qq_44965393/article/details/109482964--返回执行的上一个Transact-SQL语句的错误号,如果前一个Transact-SQL语句执行没有错误,则返回0SELECT@@ERROR--返回上次插入的标识值SELECT@@IDENTITY--返回运行SQLServer的本地服务器的名称SELECT@@SE......
  • Mysql查看连接数(连接总数、活跃数、最大并发数)
    查看最大连接数mysql>showvariableslike'%max_connection%';+-----------------------+-------+|Variable_name|Value|+-----------------------+-------+|extra_max_connections|||max_connections|2512|+----------------......
  • SQLite3中自增主键归零方法
    SQLite3中自增主键归零方法Sqlite3记录被清除之后,如果表中有自增长字段,下次再插入数据,会继续延续之前自增长字段的历史记录。即使在清空table后,如果table中有自增ID值,那么这个值是不会归零的,而且会继续呈现递增。当SQLite数据库中包含自增列时,会自动建立一个名为sqlite_sequenc......
  • 在 Istio 服务网格内连接外部 MySQL 数据库
    为了方便理解,以Istio官方提供的Bookinfo应用示例为例,利用ratings服务外部MySQL数据库。Bookinfo应用的架构图如下:其中,包含四个单独的微服务:productpage:调用details和reviews两个服务,用来生成页面。details:包含了书籍的信息。reviews:包含了书籍相关的评论。它还......
  • MySQL8新特性窗口函数详解
    本文博主给大家详细讲解一波MySQL8的新特性:窗口函数,相信大伙看完一定能有所收获......
  • MySQL8新特性窗口函数详解
    本文博主给大家详细讲解一波MySQL8的新特性:「窗口函数」,相信大伙看完一定能有所收获......
  • SQL concat函数和concat_ws函数的区别
    总结相同点:都是将几个字符串拼接在一起的函数异同点:拼接的字符串中有null值时,返回结果不一样参数代表的含义不一样。concat中的参数都是要拼接的,concat_ws的第一个参数是分隔符,后面才是要拼接的concat函数是将数据集的几个列拼接成一列。concat(col1,col2,...,colN)......