敏感数据处理

本贴最后更新于 2670 天前,其中的信息可能已经时移俗易

背景

大多数应用或多或少都会涉及到敏感数据处理,比如用户的手机号、身份证号,甚至银行卡账号。作为应用的开发者,如何 安全地 维护这些敏感数据呢?

这里讨论的安全不是指服务器如何保护,而是在数据库层面做敏感数据的分离:

  • 业务库中不保存敏感数据,只保存混淆过的数据,比如电话字段保存的是 133****9961,在数据层面就进行脱敏
  • 敏感数据统一保存在另一个库中,有应用调用一个服务来建立原值和混淆值的映射关系
  • 业务库中因为保存的是脱敏过的数据,通过只读复制镜像可以很方便地提供给其他服务使用,比如 OLAP
  • 除了技术开发上方便,运维上也方便了很多,降低了敏感数据被暴露到外部的可能性

技术设计

提供服务接口给应用存取敏感数据,本质上是一个 KV 存取服务。

1462956107181

一些细节:

  • 表 protyle 的 domain 字段用于标识该记录的作用域,在一个作用域上相同的值要保证唯一
  • 表 protyle 的 hash 字段值是 SHA-512(domain/value) 的结果,用于唯一性校验

大家有相关经验么?欢迎讨论~

  • 敏感数据
    1 引用 • 27 回帖
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖 • 2 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    330 引用 • 614 回帖 • 3 关注

相关帖子

27 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yangyujiao 1

    我们就是明目张胆的保存了电话号码···

  • @yangyujiao 这个是业主电话,泄露出去,公司就垮掉了

  • wgh

    我们是直接全加密保存

  • sweat89 1

    弄个算法,加密存 DB,业务层解密进行业务处理。有啥问题

  • 88250

    @sweat89 @wgh

    • 把鸡蛋都放一个篮子里
    • 业务来解决这个问题的话不方便复用
  • pianopaper

    @88250 加解密复用也仅仅是加解密 function 而已呀?遵循使用规则就是拿出 function 解密一下,放进去 function 加密一下呀

  • zonghua 1

    @Vanessa 哈,那么邮箱也是不能明文了吧

  • wgh

    我感觉文章里说的那种方式更麻烦

  • pianopaper

    @wgh 咱觉得也是挺麻烦的

  • 714593351 1

    我们直接存手机号明文。。。

  • wgh

    个人觉得加密解密这种方式最方便也最简单

  • 88250

    @wgh @pianopaper

    • 安全和方便应该是矛盾的
    • 这个方案的出发点是这些数据真的非常敏感,是一个公司最核心的资产
  • 表太多了。直接加密挺好的

  • wgh 1

    @88250 我感觉是一样的,只要别人解不了密就算获取到数据也没用!

  • pianopaper 1

    @88250 其实个人认为安全没有绝对的,只是在被获取的难度是否增加到一定级别,也就是被泄露的可能性是如何的,如若因为这些数据非常敏感,那放内网里进行处理是一个不错的办法(金士达的做法),所有的处理都要通过一个中间层(单独写进程来处理),所有数据均和其进行通讯

  • 88250

    @pianopaper 嗯,该方案就是这个思路

  • someone1764

    其实..在数据泄露的时候已经..

  • pianopaper 1

    @88250 这确实会增加运维难度,如果这是一个产品,中间层组件的写作需要遵循某种规则,举个例子,交易系统里的业务逻辑全部都是用存储过程来做的,UI 就仅仅做信号传递,比如,UI 点查询按钮,那么就传递一个 532232 到中间件,中间件会根据这个信号,来做到 db 的连接,同时传递 p532232 到 db 去做存储过程的处理,为什么要做 532232 到 p532232 的转换呢?因为存储过程里的命名也是有规则的,比如 db 有一个存储过程叫做 p532232 用来做查询操作的,处理得到的结果通过某种数据结构,经过中间层,再回传到 UI,同时,db,中间层,UI 都留下操作日志

  • pianopaper 1

    @88250 运维的难度就在,产品中间组件增多,会有升级,那么,升级要遵循什么规则?部署呢?多机情况呢?

  • 88250

    @pianopaper 为了安全,值得去做,或者说不得不做....

  • pianopaper 1

    @88250 这些要有人来控开发成本和风险咯,就完全不是一个人的事情咯

  • 88250

    @pianopaper 嗯,当然,而且运维上面也要非常细致和小心

  • pianopaper 1

    @88250 这里有几点个人体会分享一下,原公司站点为 windows server 2008,所用容器为 tomcat,改版的时候,考虑了一下到底是不是要换成 linux 下的 nginx 还是用张宴写的集成式的简单容器做部署,考虑来考虑去,全部人对 linux 这块也就只会敲 cd mv 等等命令,就不用说 find 文件等稍微复杂的操作了,公司的培训体系是,文档写完,图文并茂,不管会不会 linux,只要按照图文讲的进行操作,即使不知道这一步做的意思是什么,也能正常完成整个操作(所谓的常规运维,也就是点点鼠标),所以最终决定还是用张宴的集成式容器来做了部署,写个 VB 的 UI 把所有备份恢复的操作一并处理完,虽然个人觉得不是很对劲,但是这能满足在现状上大部分人的操作,一些东西如果是不得不做的话,需要有人来牵头做(谁做谁负责,做好咱 follow),成本,代价,现状等等,不是一个人能考虑得了的

  • zjhch123 1

    我是直接 DES 加密存的…每个用户都有独一无二的密文,然后根据这个密文加密

  • 88250

    @zjhch123 那密文你存哪?

  • bozong

    @88250 有手机端吗?

  • someone

    回帖已被屏蔽,内容不再显示。

    该回帖因违反社区行为准则或内容协议已被封禁
请输入回帖内容 ...

推荐标签 标签

  • V2Ray
    1 引用 • 15 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    164 引用 • 407 回帖 • 526 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 394 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 38 关注
  • sts
    2 引用 • 2 回帖 • 146 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 457 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    57 引用 • 22 回帖 • 2 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 628 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 150 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    368 引用 • 1212 回帖 • 577 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 9 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    77 引用 • 1741 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 512 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    205 引用 • 357 回帖 • 1 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 199 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 1 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖 • 2 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6521 引用 • 29303 回帖 • 248 关注
  • danl
    61 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 7 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 126 关注