JDBC-预编译SQL语句

news/发布时间2024/8/25 17:57:04

一、概述:

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
以模拟登录为例:在前台输入用户名和密码,后台判断信息是否正确,并给出前台反馈信息,前台输出反馈信息

二、创建数据库表

二、测试代码

//创建Account对像
package com.xianyu;import java.io.Serializable;public class Account implements Serializable {private int aid;private String username;private String password;private Double money;@Overridepublic String toString() {return "Account{" +"aid=" + aid +", username='" + username + '\'' +", password='" + password + '\'' +", money=" + money +'}';}public Account(int aid, String username, String password, Double money) {this.aid = aid;this.username = username;this.password = password;this.money = money;}public Account() {}public int getAid() {return aid;}public void setAid(int aid) {this.aid = aid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}
}
//调用Account对像
package com.xianyu;import java.sql.*;
import java.util.Scanner;public class TestInjection {private static String driver ="com.mysql.cj.jdbc.Driver";private static String url="jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";private static String user ="root";private static String password="12345678";public static void main(String[] args) {Scanner sc =new Scanner(System.in);System.out.print("请输入用户名:");String username=sc.next();System.out.print("请输入密码:");String pwd =sc.next();Account account = getAccount(username, pwd);System.out.println(null!= account?"登录成功":"登录失败");sc.close();}public static Account getAccount(String username,String pwd){Connection connection = null;Statement statement=null;ResultSet resultSet=null;Account account =null;try{Class.forName(driver);connection = DriverManager.getConnection(url, user,password);statement = connection.createStatement();String sql="select * from account where username ='"+username+"' and password ='"+pwd+"'";System.out.println(sql);resultSet = statement.executeQuery(sql);while(resultSet.next()){int aid = resultSet.getInt("aid");String usernamea = resultSet.getString("username");String pwda = resultSet.getString("password");double money = resultSet.getDouble("money");account=new Account(aid,usernamea,pwda,money);System.out.println(account);}}catch (Exception e){e.printStackTrace();}finally {if(null != resultSet){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if(null != statement){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if(null != connection){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}return account;}
}

正常的测试结果:

输入正确的用户名密码

SQL注入攻击测试结果
当密码后面加入 1'or'1'='1 时,登陆成功

sql注入防范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/81042648.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

!= 会处理null吗 ?

select * from t2 where teacher != 吴老师可以看出: where a ! = b 时 , 如果a中存在null , 则不会查出来null的数据. 且只会查出 非null 且 !=b 数据 select * from t2 where teacher != 吴老师 or teacher is null ; 钟声敲响了日落,柏油路跃过山坡,一直通向北方的是我…

nginx低版本文件解析漏洞

nginx低版本设计问题,会将图片解析成php文件 复现 查看nginx版本,符合低版本特征接下来我们随便上传一个图片文件,拦截这个请求,并且添加php代码。图片上传成功访问这个文件-可以正常访问接下来我们恶意访问,发现php代码被执行。

python-bs4获取图片

一、用一个实例来了解一下1、既然要用BeautifulSoup来解析,首先要把需要的模块导入;import os import requests from bs4 import BeautifulSoup2、创建一个文件夹来存放要下载的数据:文件的名可以用户自定义file_name = "imgs" if not os.path.exists…

30道python自动化测试面试题与答案汇总

对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔,下面这篇文章主要给大家介绍了关于30道python自动化测试面试题与答案汇总的相关资料,需要的朋友可以参考下 1、什么项目适合做自动化测试? 关键字:不变的、重复的、规范的 1)任务测试明确,需…

NetCore 全局异常过滤器

第一步:创建过滤器/// <summary> /// 全局异常过滤器 /// 调用示例:throw new NotImplementedException(); /// </summary> public class GlobalExceptionFilter : IExceptionFilter {readonly IWebHostEnvironment hostEnvironment;public GlobalExceptionFilte…

云服务器利用Docker搭建sqli-labs靶场环境

一、安装宝塔面板 使用xshell、electerm、SecureCRT等远程终端连接登陆上云服务器,在Linux宝塔面板使用脚本安装安装后,如下图:按照提示,在云服务器防火墙/安全组放行Linux宝塔面板的端口在浏览器打开上述网址,登录Linux宝塔面板:二、安装Docker 在Linux宝塔面板登陆后,…

echart更改options值,渲染不跟着改变的坑

1、刚开始要的效果,就是点击外环。然后让其他的进行辉县比如点击蓝色这个图环,然后未开始,进行中就进行灰显。2、刚开始我的代码,这么处理是没有问题的。达到效果。 3、但是。。。。。 4、我要进行其他的事件操作。然后要改掉该圆环图的option。这是的问题,就是我传进来的…

Rust常见编程概念

目录变量和可变性常量隐藏数据类型标量类型整型浮点型布尔型字符类型复合类型元组类型数组类型访问数组元素无效的数组元素访问函数参数语句和表达式具有返回值的函数注释控制流if 表达式使用 else if 处理多重条件在 let 语句中使用 if使用循环重复执行使用 loop 重复执行代码…

博客园折叠代码

TESTCODE TEST 测试折叠

释放创造力:可视化页面渲染引擎在低代码开发平台的应用

什么是页面渲染引擎? 页面渲染引擎是低代码开发平台的核心组件之一,它负责将开发者设计的页面布局和用户交互元素转化为具体的可视化界面。通过优化渲染效率和提供丰富的功能支持,页面渲染引擎在低代码开发过程中起到了至关重要的作用。 在低代码开发平台中,页面渲染引擎采…

springboot整合druid及多数据源配置

前言 本篇主要分两部分 ①springboot整合druid的代码配置,以及druid的监控页面演示;②对实际场景中多数据源的配置使用进行讲解。 一、springboot整合druid的演示demo可以用idea快速生成一个可运行的demo工程,具体可以参考如何快速创建springboot项目 主要用到的依赖如下:&l…

halo2.11如何自定义模板

halo有一些自定义的模板,但是有时间这些模板不满足需求, 样式不满足,数据不满足等等,这时候可以定义自己的页面模板,具体步骤 halo中目录可以定义的模板类型有三种,分别为: post 文章 page 自定义页面 category 归档 一. 配置 在主题配置文件 theme.yaml 中添加配置 customTe…

SAS导入Excel数据-- proc import

proc import导入数据 proc import datafile=""out=sas数据集名dbms=文件标识 replace; /* replacr 如果存在数据集,是否进行替换 */getnames=yes; /* 是否将第一行设置为变量名 yes(默认值)|no */datarow=2; /* 设置从第几行读入数据 */sheet…

Android 之 实验24 Retrofit网络框架

实验24 Retrofit网络框架 一、 实验目的及要求 通过本实验的学习,使学生掌握Retrofit网络框架。 二、实验设备(环境)及要求 Android Studio 三、实验内容与步骤新建一个Android项目,设置项目的基本属性,修改build.gradle.kts(Module: app),代码如下修改AndroidManifest…

Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据

太长不看版: Hub 上有不少数据集没有语言元数据,我们用机器学习来检测其语言,并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据。 Hugging Face Hub 已成为社区共享机器学习模型、数据集以及应用的存储库。随着 Hub 上的数据集越来越多,元数据,作为一种能帮…

期末加分

2023年12月7日课堂回答uml类图有两部分组成,分为属性和方法,加0.5分

电商业务,必须做好的防止重复支付,如何设计?

服务端如何防止重复支付如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务…

iMessage群发系统功能开发(功能篇)

在当今这个信息爆炸的时代,如何有效地传递信息成为了许多企业和个人关注的焦点,iMessage群发系统,作为一种新型的信息传递工具,正逐渐受到广泛的关注和应用。 本文将为你详细介绍iMessage群发系统的功能及其源代码,让你轻松掌握这一强大的信息传递工具。一、iMessage群发系…

LazyVim

LazyVim 背景发现很多同学对 vim 感兴趣但苦于上手有些困难 先介绍常规的 vim 然后着重介绍一下 lazyvim优点与其他 ide 共有的优点强大的插件生态 支持如:多窗口,快速跳转,自动补全等常规 ide 需要的功能 支持多种语言,不仅限于 golang(实际支持语言主要看 lsp,包括 gol…
推荐文章