JDBC入门六:SQL注入攻击:什么是SQL注入攻击?;Java中引号嵌套的分析;

本文通过一个员工查询功能的实例,详细介绍了SQL注入攻击的工作原理及其潜在风险。文章演示了如何利用特殊字符破坏原有的SQL筛选条件,并分析了在字符串拼接过程中处理不当可能导致的安全漏洞。

接上篇博客,沿用JDBC入门五:一个按部门查询员工功能的例子这篇博客中的案例代码;

目录

一:什么是SQL注入攻击

(1)情况阐述

(2)演示准备 

(3)启动程序,SQL注入攻击演示​

(4)分析

附:字符串拼接时:引号嵌套的分析


一:什么是SQL注入攻击

(1)情况阐述

即在这个例子中,是通过拼凑变量和字符串的方式得到最终的SQL语句的;而这种处理方式是有很大隐患的。

(2)演示准备 

如:QueryCommand类作两处更改:

(3)启动程序,SQL注入攻击演示

(4)分析

分析如下:当输入【' or 1=1 or 1='】的时候,拼凑的SQL语句为:

"select  * from employee where dname='"' or 1=1 or 1='"'"

经过java程序处理完引号嵌套后的实际为:

即where的判断条件为:dname=""  or  1=1  or  1="";因为1=1肯定为true,又因为筛选条件间是or的关系,所以,1=1让其他所有筛选条件都失效了,这个where的判断条件永远为true;

像这种,输入了特殊格式的字符,从而嵌入到原有SQL中,破坏原有SQL筛选条件的数据攻击方式,就是SQL注入攻击。

SQL注入攻击是网站或应用程序中非常常见的情况,出现的根本原因在输入的数据中,并没有对像单引号这样的特殊字符作处理,所以在进行字符串拼接后,这个单引号就会作为SQL的一部分出现,并且MySQL会对其进行解析,导致出现了注入攻击的问题。SQL注入不会破坏程序的运行,但是会造成数据的泄露!!!


附:字符串拼接时:引号嵌套的分析

声明1:WHERE子句中,判断字符串的时候就需要加引号的;如下面案例:

声明2:Java中引号嵌套的原则;

        (1)单引号内只能嵌套双引号;

        (2)双引号内只能嵌套单引号;

        (3)如果想在双引号内再嵌套双引号,里面的双引号必须要转义(\");

即,引号嵌套的时候,保持双中套单,单中套双就可以了。

分析:上面的SQL语句:

或者可以这样看:(2021-12-5)

然后,几个案例:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值