SQL注入问题及事务

幸运草
幸运草
幸运草
878
文章
3
评论
2020年3月30日19:01:03 评论 296

在这里我给大家数一下数据库中的常见问题,有时候我们在测试数据的时候会发现当我们在文本框中输入sql代码时数据库接收数据则会收到影响,这就是我们常说的sql注入问题,在这里我们常用的解决方案就是使用PrepareStatement对象替代Statement对象接收页面数据,下面我在这里给大家详细的说一下。

用户名输入: tom'--即可将sql语句改变为

SELECT * FROM users NAME = 'tom' AND PASSWORD ='1234';

SELECT * FROM users NAME ='tom' --'AND PASSWORD = '1234';

后方的密码部分将会被备注不起作用,此问题称为sql的注入问题

本质原因是让用户参与到了sql语句的编写中。

statement的对象功能比较单一,仅仅将sql语句运输到数据库执行

**PrepareStatement比较勤快

PerpareStatement会先进行一次sql语句的运输,例如

SELECT * FROM users NAME = ? AND PASSWORD =?;

此语句先进行编译,并无法执行,当PerpareStatement第二次将用户的提交的数据传递过来即可运行

当我们在实际操作时也会遇到这么一个问题,例如我们遇到转账操作时,此时我们需要扣一个人的账户加到另一个账户中去,如果出现了意外情况,此时如果只操作了一条sql语句,就会对一方造成损失,因此我们需要保证两条sql语句有一条执行则必须执行另一条,否则两条都不执行。这里我们需要了解一个新的东西,就是事务,以下是我对事务的理解及详细介绍。

建表语句

CREATE TABLE t_account(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(20),

balance DOUBLE(6,2)

)

-- tom向jerry转账100元的事务

-- 开启事务

START TRANSACTION;

-- 在tom的账户扣除100元

UPDATE t_account SET balance = balance-100 WHERE id=1;

-- 在jerry的账户添加100元

UPDATE t_account SET balance = balance+100 WHERE id=2;

-- 如果成功则提交事务

COMMIT;

-- 如果失败则回滚事务

ROLLBACK;

执行结果显示

[SQL] START TRANSACTION;

受影响的行: 0

时间: 0.000ms

[SQL]

UPDATE t_account SET balance = balance-100 WHERE id=1;

受影响的行: 1

时间: 0.001ms

[SQL]

UPDATE t_account SET balance = balance+100 WHERE id=2;

受影响的行: 1

时间: 0.001ms

[SQL]

COMMIT;

受影响的行: 0

时间: 0.069ms

[SQL]

ROLLBACK;

受影响的行: 0

时间: 0.000ms

在mysql中默认所有的sql语句都在事务中执行,不开启事务的话两条语句会产生两个事务,

当语句执行完成并没有问题的时候,事务会自动提交。

****开启事务则只产生一个事务,通过 start transaction来开启事务,手动控制每条sql语句执

行完成都不会自动提交

****事务的结束

1.commit 提交:语句执行成功则提交

2.rollback 回滚:语句执行失败则回滚事务

3.断网,宕机。。相当于自动回滚

4.超时。。自动回滚

5.DDL事务会自动提交

——详解DDL、DCL、DML

DDL(数据定义语言)

CREATE  DROP  ALTER  TRANSACTION

DCL(数据控制语言)

GRANK  COMMIT  RLLBACK

DML (数据操作语言)

INSERT  UPDATE  DELETE

|-DQL(DQL分属于DML)SELECT

本文来源于:SQL注入问题及事务-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

幸运草
学会与网络威胁共存 安全防范

学会与网络威胁共存

网络威胁就像感冒或者其他什么感染性病毒,谁也无法避免。但这是生活的一部分,它们就在那里,伺机给你来上一下,让你的生活变得有那么点点艰难。 同时,你又不能以牺牲业务发展的方式全情投入到防范潜在风险上。你...
2020年7种最大的网络安全威胁 安全防范

2020年7种最大的网络安全威胁

计算机盲打的技巧与方法【听看打练习】盲打不是几天就能练出来的。 首先你要把键盘上字母和数字的位置背下来。 再有严格遵照正规指法练习(就是哪个指头负责哪片键盘区)。 每个字都要按照上面的要求打出来,一个...
Web | 渗透神器nmap:端口扫描工具 漏洞扫描

Web | 渗透神器nmap:端口扫描工具

Watcher - 被动Web应用程序漏洞扫描程序Watcher是基于HTTP的Web应用程序的运行时被动分析工具。被动意味着它不会损害生产系统,在云计算,共享托管和专用托管环境中使用它是完全安全的。...