什么是SQL注入并解决
' or ' 1 ' = ' 1
原理:通过违规的字符串改变原来的SQL语句 ;【将敏感字符进行转义】
// 包名
package com.zhulx.JDBC; // 导入实例类 import com.zhulx.pojo.Account; import java.sql.*;
import java.util.ArrayList;
import java.util.List; /**
* JDBC 快速入门
* **/
public class JDBC03 {
// throws Exception 说明此方法不会处理异常
public static void main(String[] args) throws Exception {
// TODO 用户登录逻辑判断
// 用户登录
// 2. 获取连接 【 就是关联数据库 】 访问 test 数据库
String url = "jdbc:mysql://127.0.0.1:3306/tb_user";
String username = "root";
String password = "abc123";
Connection conn = DriverManager.getConnection(url, username, password);
// 前端用户输入的用户名和密码
// 单引号是字符 双引号是字符串
String name = "zhulongxu";
String pwd = "123456";
name = "dasfjalhsdf";
pwd = "' or ' 1 ' = ' 1 "; // 3. 定义 sql DQL
// String sql = "select * from user_table where username='"+name+"' and password = '"+pwd+"'";
// 3. prepareStatment定义 SQL 语句的写法
String sql = "select * from user_table where username = ? and password = ?"; // 4. 获取执行 sql 对象 statement
// Statement stmt = conn.createStatement() ;
// 4. prepareStatment 获取 pstmt 对象
PreparedStatement pstmt = conn.prepareStatement(sql); // 5. 设置 ? 的值 1 2 都是参数索引, 1 表示第一个 ?
// 原来 ' or ' 1 ' = ' 1 的字符串通过 prepareStatement 把单引号转义了 ‘/’ 就不再是违法的字符串了【‘】
pstmt.setString(1, name);
pstmt.setString(2,pwd);
// SQL 注入原理:就是通过字符串的拼接和关键字符串把原本的SQL语句给改变了
// prepareStatement 的作用:避免SQL注入攻击 // 5. 执行 sql 【返回值是受影响的行数】
// ResultSet rs = stmt.executeQuery(sql);
// 5. preparestatement 执行 sql
ResultSet rs = pstmt.executeQuery(); // 6. 判断是否登录成功 如果在数据库找到了这个用户说明登录成功 rs.next() 是否获取到了数据
// // System.out.println(rs.next()); // true
if(rs.next()) {
System.out.println(name);
System.out.println(pwd);
System.out.println(sql);
System.out.println("登录成功");
}else {
System.out.println(name);
System.out.println(pwd);
System.out.println("登录失败");
} // 7. 释放资源
pstmt.close();
conn.close();
rs.close();
}
}
什么是SQL注入并解决的更多相关文章
- SQL注入漏洞解决方法
本文只指针编码层次的SQL注入漏洞解决方法,例子代码是以java为主. 1,参数化的预编译查询语句 不安全例子 String query = "SELECT account_balance ...
- sql 注入 与解决
package cn.itcast.jdbc; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLExce ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
- JDBC的使用和SQL注入问题
基本的JDBC使用: package demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- 【JDBC】学习路径3-密码登录&SQL注入攻击
最后再提醒一句,每次在测试JDBC程序的时候,一定要确保MySQL正在运行. 打开控制台(终端),输入mysql 如果没启动,则出现以下提示: Mac端启动MySQL数据库,需要在系统便好设置中启动. ...
- IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
IBatis解决SQL注入(#与$的区别) 在IBatis中,我们使用SqlMap进行Sql查询时,需要引用参数,在参数引用中可以使用两种占位符#和$.这两种占位符有什么区别呢? (1):#***#, ...
- PreparedStatement解决sql注入问题
总结 PreparedStatement解决sql注入问题 :sql中使用?做占位符 2.得到PreparedStatement对象 PreparedStatement pst=conn.prepar ...
- 使用过滤器解决SQL注入和跨站点脚本编制
1 SQL注入.盲注 1.1 SQL注入.盲注概述 Web 应用程序通常在后端使用数据库,以与企业数据仓库交互.查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本).Web 应用 ...
- PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
这篇是上一篇 http://www.cnblogs.com/charlesblc/p/5987951.html 的续集. 看有的文章提到mysqli和PDO都支持多重查询,所以下面的url会造成表数据 ...
随机推荐
- 【Dos-BatchPrograming】03
--1.AT 计划任务 Microsoft Windows [版本 10.0.19041.746] (c) 2020 Microsoft Corporation. 保留所有权利. C:\Users\A ...
- Typora配置自动上传图片到图床
在多平台发布文章时,如果遇到图片不能导入的问题,推荐使用图床!推荐使用阿里云或腾讯云,免费的不用考虑了! PicGo下载 链接:https://pan.quark.cn/s/2ec95402631 ...
- 元学习的经典文献:S. Thrun - 1998 - LEARNING TO LEARN: INTRODUCTION AND OVERVIEW
地址: https://link.springer.com/chapter/10.1007/978-1-4615-5529-2_1
- 《Python数据可视化之matplotlib实践》 源码 第二篇 精进 第五章
图 5.1 import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import AutoMinorLoca ...
- Jax计算框架的MPI通讯的扩展库 —— mpi4jax
地址: https://github.com/mpi4jax/mpi4jax PS. 关于这个library的性能表现并不是很清楚,没有亲自手动安装并测试过.这里只作为链接收藏之用,毕竟这个属于比较小 ...
- 机器学习中的权重衰退 —— 深度学习中的权重衰退 —— 权重衰退 —— weight decay
在看代码时看到了这个概念,以前虽然也看到过但是没有太在意,再次看到于是研究了一下. 引自: https://sota.jiqizhixin.com/models/methods/0bdb8f87-9c ...
- VcXsrv: 一个好用的Windows X11 Server
windows10没有系统自带的X11服务器,使用了几款X11的windows下X11服务器软件后发现了一个好用的软件--VcXsrv. 下载地址: https://sourceforge.net/p ...
- (计算机类)人工智能方向会议的截止时间表 —— AI Conference Deadlines —— 会议投稿截止时间
由 https://paperswithcode.com/ 提供的时间表. 做AI方向的research,经常需要关注的就是conference的deadline,之前往往都是需要手动的去挨个搜索,下 ...
- loj6669 Nauuo and Binary Tree 题解
https://loj.ac/p/6669 赛时做法 先 \(n-1\) 次问出深度 逐层考虑.slv(vector<int> a,vector<int> b) 表示在点集 \ ...
- 十五分钟两百行代码,手写一个vue项目全局通用的弹框
前言: 我们在写vue项目时,弹框是非常常用的组件,并且在同一个项目中,弹框大多类似.所以我们可以抽离封装出一个通用的弹框: 因为vue3可向下兼容,所以作者这边会使用vue2的写法,vue3写法大同 ...