SQL注入问题及事务

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

在这里我给大家数一下数据库中的常见问题,有时候我们在测试数据的时候会发现当我们在文本框中输入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日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
“勒索”全世界丨解密WannaCry帝国“合伙人” 劫持

“勒索”全世界丨解密WannaCry帝国“合伙人”

绕过激活锁工具教程分享说明一下并不是所有的设备都可以,目前是5s以上到苹果x以下的机型适用,机子没有别的故障的正常机子只是被id锁了,基带坏了也可以只要是CPU正常开机, 第一个 连接:https:/...
勒索软件防暴术:企业需要学会这四招 劫持

勒索软件防暴术:企业需要学会这四招

LiteBee编程无人机教程分享 ,小白从入门到精通必备!LiteBee作为一款入门级编程飞行器套件,在搭建、编程和控制中都能够让使用者轻松自如的上手。但必定有很多人还是不了解或者对其编程方面存在疑问...
全球爆发勒索病毒 多家安全厂商推防御方案 劫持

全球爆发勒索病毒 多家安全厂商推防御方案

5月12日,英国、意大利、俄罗斯等全球多个国家爆发勒索病毒攻击,中国的校园网也未能幸免,部分高校电脑被感染,有学生毕业论文被病毒加密,只有支付高额赎金才能恢复。 而在英国方面, 5月12日英国国家医疗...