数据库安全·数据加密

以下节选择《Netkiller Architect 手札》

作者:netkiller

地址 http://www.netkiller.cn/architect/

接下来几周的话题是数据库安全。

5.8. 数据加密

数据库中有很多敏感字段,不允许随意查看,例如开发人员,运维人员,甚至DBA数据库管理员。另外加密主要是防止被黑客脱库(盗走)

敏感数据加密有很多办法,可以用数据库内部加密函数,也可以在外部处理后写入数据库。加密算法有很多种,但通常两类比较常用,一种是通过key加密解密,另一种是通过证书加密解密。

通常程序员负责写程序,程序交给运维配置,运维将key设置好,运维不能有数据库权限,DBA只能登陆数据库,没有key权限。

5.8.1. AES_ENCRYPT / AES_DECRYPT

这里介绍AES加密与解密简单用法

			mysql> select AES_ENCRYPT('helloworld','key');
+---------------------------------+
| AES_ENCRYPT('helloworld','key') |
+---------------------------------+
|                                 |
+---------------------------------+
1 row in set (0.00 sec)

mysql> select AES_DECRYPT(AES_ENCRYPT('helloworld','key'),'key');
+----------------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('helloworld','key'),'key') |
+----------------------------------------------------+
| helloworld                                         |
+----------------------------------------------------+
1 row in set (0.00 sec)

mysql>			

5.8.2. 加密字段

加密数据入库

			CREATE TABLE `encryption` (
	`mobile` VARBINARY(16) NOT NULL,
	`key` VARCHAR(32) NOT NULL
)
ENGINE=InnoDB;

INSERT INTO encryption(`mobile`,`key`)VALUES( AES_ENCRYPT('13691851789',md5('13691851789')), md5('13691851789')) 
select AES_DECRYPT(mobile,`key`), length(mobile) from encryption;			

这里方便演示将key 写入了数据库,实际应用key应该存储在应用程序配置文件中。通常能把获得key的人不应该用数据库权限。

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python

10- vue django restful framework 打造生鲜超市 -用户登录和手机注册(中)

Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 手机注册和用户登录(中) Json...

49111
来自专栏小白的技术客栈

记一次Linux被入侵的经历

Linux入侵经历 被入侵的一次经历 今天给大家说说一次被入侵的经历,仅供大家参考。 ? 事件起因 2017年9月7日下午测试带宽,登录到服务器。在/tmp目...

4126
来自专栏技术小黑屋

一些快速提高Android开发的脚本与技巧(终端篇)

正所谓“工欲善其事必先利其器”,一个好的工具或者技巧能让提升工作效率,起到事半功倍的效果。在这里斗胆列出一些窃以为一些可能快速提高Android日常开发的脚本,...

742
来自专栏跟着阿笨一起玩NET

url传递中文的解决方案

本文转载:http://www.cnblogs.com/ghd258/archive/2005/10/23/260241.html

382
来自专栏张戈的专栏

MySQL之Field ‘***’doesn’t have a default value错误解决办法

今天,中国博客联盟有博友反馈,zgboke.com 无法提交博客,当时我正好准备去假日广场聚会,就匆匆忙忙的提交试了下,发现提交博客的时候确实报如下错误: ? ...

2895
来自专栏IT技术篇

gdb 基础命令

GDB是GNU发布的一个调试工具。gdb 是基于UNIX/Linux 命令行的,功能强大,可与windows平台的visual studio 媲美。

37622
来自专栏along的开发之旅

关于 AndroidJavaCompile.setDependencyCacheDir 的解决办法

svn新建了release分支, 报错如下: Error:Cause: com.android.build.gradle.tasks.factory.And...

381
来自专栏Laoqi's Linux运维专列

4种备份MySQL数据库(基本备份方面问题不大了)

3126
来自专栏我的博客

TP入门第四天

1、URL大小写 默认配置:’URL_CASE_INSENSITIVE’  => false,   // URL地址是否不区分大小写 这样默认情况下是区分大小写...

2865
来自专栏xcywt

《Linux命令行与shell脚本编程大全》23章24章

第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell。但是它并不是唯一的选择,还有其他的shell可以供你选择。 23...

2167

扫描关注云+社区