数据库中的数据

sql代码

package com.zjw.jdbc2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner; /*
* sql注入
*/
public class SqlInject
{
public static void main(String[] args)
{
try
{
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/aaa?useSSL=false&serverTimezone=UTC";
String user = "root" ;
String password = "123456"; //获取连接
Connection con = DriverManager.getConnection(url, user, password);
Statement stat = con.createStatement(); //输入用户名和密码
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String inName = sc.nextLine();
String inPass = sc.nextLine();
//查询数据库
String sql = "SELECT * FROM category WHERE sid = '"+inName+"' AND sname = '"+inPass+"';";
System.out.println(sql);
//结果处理
ResultSet res = stat.executeQuery(sql);
while(res.next())
{
String sid = res.getString("sid");
String sname = res.getString("sname");
System.out.println(sid+" "+sname);
}
//释放资源
res.close();
stat.close();
con.close();
} catch (ClassNotFoundException | SQLException e)
{
e.printStackTrace();
} }
}

结果:

防止sql注入代码:

package com.zjw.jdbc2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner; /*
* 防止sql注入
*/
public class SqlInject2
{
public static void main(String[] args)
{
try
{
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/aaa?useSSL=false&serverTimezone=UTC";
String user = "root" ;
String password = "123456"; //获取连接
Connection con = DriverManager.getConnection(url, user, password); //输入用户名和密码
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String inName = sc.nextLine();
String inPass = sc.nextLine(); //查询数据库
String sql = "SELECT * FROM category WHERE sid = ? AND sname = ? ;";
PreparedStatement pst = con.prepareStatement(sql);//PreparedStatement为Satetment的子接口
pst.setString(1, inName);//设置参数
pst.setString(2, inPass); //结果处理
ResultSet res = pst.executeQuery();//调用方法不用加sql
while(res.next())
{
String sid = res.getString("sid");
String sname = res.getString("sname");
System.out.println(sid+" "+sname);
}
//释放资源
res.close();
pst.close();
con.close();
} catch (ClassNotFoundException | SQLException e)
{
e.printStackTrace();
} }
}

结果:

正常输入数据

异常输入数据

sql注入与防止sql注入的更多相关文章

  1. SQL中批量删除被注入的恶意代码的方法

    下文将为您介绍SQL中批量删除被注入的恶意代码的方法,供您参考,如果您也遇到了这样的问题,不妨一看,相信对您会有所帮助. 1,如果你的数据表很少的话,那么写几条简单的sql就搞定了 对于表中的nvch ...

  2. [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

    最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...

  3. 使用sqlmap注入DVWA的SQL Injection菜单

    1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...

  4. 『SQL注入』 User-Agent 手工注入的探测与利用分析

    原理很简单:后台在接收UA时没有对UA做过滤,也没有PDO进行数据交互(实际PDO是非常有必要的),导致UA中有恶意代码,最终在数据库中执行. Bug 代码: 本地顺手打了一个环境,Bug 代码部分: ...

  5. 读书笔记之SQL注入漏洞和SQL调优

    原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...

  6. SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优

    SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...

  7. 【sql注入教程】SQL注入是什么?我们如何去玩转它

    [sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区   SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...

  8. 【sql注入】浅谈sql注入中的Post注入

    [sql注入]浅谈sql注入中的Post注入 本文来源:i春秋学院 00x01在许多交流群中,我看见很多朋友对于post注入很是迷茫,曾几何,我也是这样,因为我们都被复杂化了,想的太辅助了所以导致现在 ...

  9. sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)

    (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...

  10. 注入学习1:SQL注入语句大全

    学习背景 之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防. 什么是注入 一般来说,SQL注入一般存在于形如:HTTP://xxx.x ...

随机推荐

  1. druid 连接池参数说明

    一.参数配置说明 属性 说明 建议值 url 数据库的jdbc连接地址.一般为连接oracle/mysql.示例如下:     mysql : jdbc:mysql://ip:port/dbname? ...

  2. QT5笔记:11. Qt类库的模块

    基础模块:提供了Qt的最基本的功能 附加模块:实现了一些特定功能的提供了附加价值的模块 增值模块:商业版才有的模块,单独发布的提供额外附加价值的模块或工具 技术预览模块:一些处于开发阶段,但是可以作为 ...

  3. 解决Typecho文章cid不连续的教程

    Typecho下文章编号(cid)不连续,虽然不影响什么,也无关紧要,但是对于有强迫症的人(比如我)来说,真的是无法忍受.还好有大佬提供了解决办法. 将以下代码保存为php文件,上传至网站根目录,在浏 ...

  4. docker - [16] Swarm集群搭建

    以下是购买的阿里云服务器ECS的四个实例,确保四台服务器互相可以ping通. 一.环境准备(安装docker) (1)安装gcc相关环境(在四台服务器上) yum -y install gcc yum ...

  5. Flink学习(九) Sink到Kafka

    package com.wyh.streamingApi.sink import java.util.Properties import org.apache.flink.api.common.ser ...

  6. PHP中处理html相关函数集锦

    1.html_entity_decode() 函数把 HTML 实体转换为字符. Html_entity_decode() 是 htmlentities() 的反函数. 例子: <?Php $s ...

  7. 记vue修改数组属性,dom不发生变化的问题

    目录: 目录 目录: 开篇 正确的姿势 为什么 $set 开篇 今天在写vue的时候,出现了一个以前可能没遇到的问题.我利用一个数组记录列表下按钮的启用.禁用状态,但我点击某个列表项按钮后,会修改当前 ...

  8. KTransformer实战DeepSeek-R1-1.58bit量化模型

    技术背景 在上一篇文章中,我们介绍过KTransformers大模型高性能加载工具的安装和使用方法.但是当时因为是在一个比较老旧的硬件上面进行测试,其实并没有真正的运行起来.现在补一个在KTransf ...

  9. 想查看某些网站源码,结果发现网站F12被禁用,怎么解决?

    当我们访问某些网站的时候,发现网站是禁用了F12和右键功能的.比如想保存网页上的一些文字或图片等, 新手不知道怎么破除. 下面分享给大家几种方法:1.打开网页后,鼠标点进浏览器地址栏,再按F12键,就 ...

  10. PVE虚拟平台常用简明操作,三分钟搞定虚拟机更换安装配置

    Proxmox Virtual Environment是一个基于QEMU/KVM和LXC的开源服务器虚拟化管理解决方案,本文简称PVE,与之相类似的虚拟化平台是VMWARE的ESXi虚拟平台,相较于商 ...