帐号余额表,里面一般都有明文的帐号余额.
如果应用程序没有针对性设计,则DBA可以随意篡改.
模拟帐号表.
create table user(
userid bigint,
balance int,
checksum varchar(32)
);
模拟JAVA程序,这个加密的过程,是JAVA程序中处理的.
创建帐号,余额100元
set @userid:=99588;
set @balance:=100;
set @checksum=md5(DES_ENCRYPT(100,'key'));
insert into user values(@userid,@balance,@checksum);

假如DBA修改了帐号的余额,因为他不知道应用程序中加密的密钥,所以无法生成checksum信息.
mysql> update user set balance=10000 where userid=99588;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
应用程序查询和修改时核对checksum,都会感知异常
因为JAVA用相同密钥加密,得出的checksum值,不一样了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2113133/
,如需转载,请注明出处,否则将追究法律责任。