博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC技术(三)——预防SQL注入攻击
阅读量:3915 次
发布时间:2019-05-23

本文共 1281 字,大约阅读时间需要 4 分钟。

【前言】

针对中,通过SQL语句漏洞进行注入攻击的案例,在本篇博客,我们就来学习一下,如何预防SQL注入攻击。

【思路】

使用 Statement 的一个子接口 PreparedStatement prepareStatement(String sql)  ,来实现预防SQL注入

【代码】

public class JDBCDemo3 {	public static void main(String[] args)throws Exception {		Class.forName("com.mysql.jdbc.Driver");		String url = "jdbc:mysql://localhost:3306/day07";		String username = "root";		String password = "root";		Connection con = DriverManager.getConnection(url, username, password);		Scanner sc = new Scanner(System.in);		System.out.print("用户名:");		String user = sc.nextLine();		System.out.print("密码:");		String pass = sc.nextLine();				//执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败		String sql = "SELECT * FROM users WHERE username=? AND PASSWORD=?";		//调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类		//方法中参数,SQL语句中的参数全部采用问号占位符		PreparedStatement pst =  con.prepareStatement(sql);		System.out.println(pst);		//调用pst对象set方法,设置问号占位符上的参数		pst.setObject(1, user);		pst.setObject(2, pass);				//调用方法,执行SQL,获取结果集		ResultSet rs = pst.executeQuery();		while(rs.next()){			System.out.println("登陆成功!");			System.out.println("您的用户名为:"+rs.getString("username")+"   您的密码为:"+rs.getString("password"));		}				rs.close();		pst.close();		con.close();	}}

正常登陆:

进行SQL注入攻击:

因此,建议以后的登录校验中,使用Statement 的子接口prepareStatement,可以防止注入攻击。

 

转载地址:http://ynirn.baihongyu.com/

你可能感兴趣的文章
WTM系列视频教程:View和Taghelper
查看>>
面试官:你连HTTP请求Post和Get都不了解?
查看>>
.NET Core 3.0 即将结束生命周期,建议迁移 3.1
查看>>
开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布
查看>>
基于.NET下的人工智能|利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境...
查看>>
【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题---WebApi环境搭建运行发布部署篇...
查看>>
200行代码,7个对象——让你了解ASP.NET Core框架的本质[3.x版]
查看>>
.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(下)...
查看>>
对比Java和.NET多线程编程
查看>>
[头脑风暴] 解读Docker Bridge网络模型
查看>>
集成平台集群任务动态分派
查看>>
【.net core】电商平台升级之微服务架构应用实战
查看>>
【翻译】.NET 5 Preview 1 发布
查看>>
使用GUI工具Portainer.io管控Docker容器
查看>>
Abp vNext发布v2.3!
查看>>
.NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
查看>>
BeetleX之vue-autoui自匹配UI插件
查看>>
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
查看>>
如何用 Blazor 实现 Ant Design 组件库?
查看>>
DotNetCore Web应用程序中的Session管理
查看>>