V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
zealinux
V2EX  ›  MySQL

今天遇到个需求,需要加密数据库(MySQL)表中某些字段,比如手机号,该怎么做?

  •  
  •   zealinux · 2019-05-13 09:44:26 +08:00 · 11952 次点击
    这是一个创建于 2022 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家的生产环境中的数据库表也都是加密 手机号吗?

    第一感觉没有这个必要, 加密手机号的操作应该是在应用层来做。

    或者问,要实现这样的数据库层面做,需要怎么做?

    (现在用的 Azure 上的 MySQL 服务)

    30 条回复    2021-07-15 15:54:25 +08:00
    tt67wq
        1
    tt67wq  
       2019-05-13 09:48:09 +08:00
    在数据库加密好点吧,如果被脱裤了起码拿不到手机号
    用个对称加密就行
    xuanbg
        2
    xuanbg  
       2019-05-13 09:54:01 +08:00
    敏感数据集中起来搞一个对象,然后序列化成 JSON 再对称加密后存储。要检索的话另外若干个字段分别存 MD5 就好了了。
    wweir
        3
    wweir  
       2019-05-13 09:55:49 +08:00
    应用层加密,数据库直接存加密后的数据
    airfling
        4
    airfling  
       2019-05-13 10:00:23 +08:00
    对称加密就可以了,我一般都是在程序中加密解密,然后保存到数据库中的是加密后的字段
    xy2401
        5
    xy2401  
       2019-05-13 10:50:04 +08:00
    用视图可以做不?
    julyclyde
        6
    julyclyde  
       2019-05-13 10:55:59 +08:00   ❤️ 1
    手机号做 hash 无意义
    kiwier
        7
    kiwier  
       2019-05-13 10:58:07 +08:00
    md5 已不安全
    liuzuo
        8
    liuzuo  
       2019-05-13 11:05:17 +08:00
    HASH 一列+加密一列。
    HASH 用来查找,只能精确查找。
    加密用来反解。

    但如果是要求的列多或者服务多,是不是需要考虑 agent 模式。
    dilu
        9
    dilu  
       2019-05-13 11:10:44 +08:00
    我们是这样实现的 数据库存两个字段,一个加密后的,一个类似 salt 的东西,在 model 层封装好。

    然后有个单独的加密解密服务器专门做这个。再麻烦也得做,这种对我们公司来说是强需求。
    Navee
        10
    Navee  
       2019-05-13 11:10:55 +08:00   ❤️ 1
    37Y37
        12
    37Y37  
       2019-05-13 11:17:59 +08:00
    应用层做,RSA 加密,包括连数据库的账号密码,以及数据库中的敏感数据
    chenset
        13
    chenset  
       2019-05-13 11:27:00 +08:00
    @Navee 我的库也是采用这种 aes 对称加密方式, 效果不错. 应用层和数据库层都有相同的实现, 非常方便. ORM 读写支持 get/set 过滤, 自动加解密. 爽的不行.
    reid2017
        14
    reid2017  
       2019-05-13 11:33:56 +08:00
    @chenset 请教 ORM 如何自动加解密
    mooncakejs
        15
    mooncakejs  
       2019-05-13 11:39:20 +08:00
    @reid2017 估计就是 getter 方法
    chenset
        16
    chenset  
       2019-05-13 11:44:40 +08:00
    @reid2017 ORM 一般都有字段过滤器 /拦截器 /getter setter. 除了写 orm where 条件之类的场景需要手动加解密, 其他都自动了
    chenset
        17
    chenset  
       2019-05-13 11:46:22 +08:00
    这个加密在过国.家等级保护的是必须的.
    jeffdeng
        18
    jeffdeng  
       2019-05-13 12:04:33 +08:00
    @reid2017 扩展 mybatis 的 BaseTypeHandler 类
    enaxm
        19
    enaxm  
       2019-05-13 14:10:46 +08:00
    @julyclyde
    表示接过的联通和移动的接口都是 hash 加密的...
    jswh
        20
    jswh  
       2019-05-13 14:23:30 +08:00
    用不对成加密之后寸数据库,密钥是通过内部接口发放的,需要向公司申请,只能再生产环境拿到。
    ducklyl
        21
    ducklyl  
       2019-05-13 14:40:55 +08:00
    用数据库自带的加密函数即可。
    983081882
        22
    983081882  
       2019-05-13 14:56:03 +08:00
    看到这个我就来吐槽了 我经历的一家公司 就把敏感字段用 base64 编码了一次 论糊弄人简直没有更坑的了
    orangeade
        23
    orangeade  
       2019-05-13 15:11:40 +08:00 via Android
    单独字段,加版本号
    可以再搞个哈希字段方便快速查询
    avenger
        24
    avenger  
       2019-05-13 18:23:00 +08:00 via iPhone
    加密后怎么 like 查询?
    cway
        25
    cway  
       2019-05-13 18:28:34 +08:00
    @avenger 我也,同问,可能不需要 like 查询
    sagaxu
        26
    sagaxu  
       2019-05-13 19:11:32 +08:00 via Android
    从大厂频繁被脱裤看,密码明文保存的都不少,何况是手机号?
    wwek
        27
    wwek  
       2019-05-13 19:25:46 +08:00
    @liuzuo 就是说的方案为佳
    284716337
        28
    284716337  
       2019-05-13 19:32:52 +08:00
    加密后保存,应用取数据的时候解密
    kilvn
        29
    kilvn  
       2020-10-13 19:38:16 +08:00
    https://www.cnblogs.com/songyaru/p/12842671.html

    这个简单的加密解密函数可以看下,撸了一遍还挺香
    lskjdfgl
        30
    lskjdfgl  
       2021-07-15 15:54:25 +08:00
    用数据库的对称加密,还可以做模糊搜索,如果用程序做只能精确搜索了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.