IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC登录模块【SQL注入】 -> 正文阅读

[大数据]JDBC登录模块【SQL注入】

主方法

在这里插入图片描述

具有SQL注入攻击

由于sql语句参数部分是由前台发往后台,后台的sql语句是拼接而来,如果拼接的过程中出现数据库的关键字就有可能拼接出的sql语句的语义发生改变从而执行一些其他操作—sql注入攻击
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
#号表示注释

避免SQL注入攻击

在这里插入图片描述

在这里插入图片描述

完整代码

package cn.tedu.jdbc.sql;

import cn.tedu.jdbc.utiles.JDBCUtils;

import java.sql.*;
import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        //获取控制台输入的用户名和密码
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = sc.nextLine();
        System.out.println("请输入密码:");
        String password=sc.nextLine();
        //把输入的用户名和密码传入到方法中来验证是否可以登录
        textLogin(name,password);
        //
//        textPreparedLogin(name,password);
    }
    //避免sql注入攻击
    private static void textPreparedLogin(String name, String password) {
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            conn = JDBCUtils.getConnection();
            ps = conn.prepareStatement("select * from user where name=? and password=?");
            ps.setString(1,name);
            ps.setString(2,password);
            rs = ps.executeQuery();
            if(rs.next()){
                System.out.println("登录成功!!");
            }else {
                System.out.println("登录失败!!!");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(conn,ps,rs);
        }
    }

    //具有sql注入攻击
    private static void textLogin(String name, String password) {
        Connection conn=null;
        Statement stat=null;
        ResultSet rs=null;
        try {
            conn = JDBCUtils.getConnection();
            stat = conn.createStatement();
            //name='lili'
            //select * from user where name='周杰伦'#'and password='
            rs = stat.executeQuery("select * from user where name='" + name + "' and password='" + password + "'");
            //如果能够找到这个数据,那么就可以执行rs.next()
            if(rs.next()){//判断是否获取了数据
                System.out.println("登录成功!!!");
            }else {
                System.out.println("登录失败!!!");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(conn,stat,rs);
        }
    }
}



  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:49:32  更:2022-05-01 15:49:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:54:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码