如何批量处理数据库中的敏感信息

技术如何批量处理数据库中的敏感信息本篇文章为大家展示了如何批量处理数据库中的敏感信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言对于一些敏感数据,往往会对其加密后再入库,这

本文向您展示了如何批量处理数据库中的敏感信息。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

前言

对于一些敏感数据,往往会在存储前进行加密,这是最简单的数据安全措施。

最常见的是手机号和身份证号。我相信很多公司都是以明文形式存储这些敏感信息的。

万一有人发现系统漏洞或者被拖到图书馆,基本就凉了。

老黄最近也发现了公司内部的一个制度存在这样的问题。第一次发现的时候,震惊了,这么赤裸裸的明文手机号和身份证号。

第一反应是加密这两个数据。

既然需要加密,那么使用中的系统肯定会受到影响,几分钟之内几千万的数据是无法修复的。

本系统使用的数据库是阿里巴巴云的RDS(SQL Server)。

先简单说一下老黄的治疗方案。

如何处理

整个处理流程分为三个步骤:

修改数据库中的字段长度时,系统需要更新一个版本进行兼容处理,使用统一的加密方式进行写入,读取时加入长度判断,长度大于20时解密,保证密文不会直接显示。在修改数据之前,数据库为这两个字段设置的长度是20,现在统一调整为150。

公司内部已经统一了一套加解密方式,所以调整系统相对简单,在数据层统一处理。

剩下的就是去数据库修改数据了。

统一的加密方法,没有办法直接在数据库中使用,所以我们只能单独编写程序来处理。

修订后的数据还细分为以下三个步骤。

读取源数据,加密相关字段,将加密后的数据写入临时表,根据临时表更新源表的相关字段。这里的核心一个是批量写入批量更新.如果每个项目都更新,我不知道需要多长时间才能处理完。

首先编写一个控制台程序,将加密后的数据按照Id分批次,一次写入5000条的频率,将一百万条数据视为一个批次。

varflag=true

var begin=0;

vartmpEnd=begin 5000

varend=1000000

while(标志)

{

//省略读取数据

foreach(variteminlist)

{

DataRowdr=dt。NewRow();

dr[' Id ']=项目。id;

dr['IDCard']=GetEncryptValue(项。IDCard?'');

dr['PhoneNo']=GetEncryptValue(项。电话号码?'');

dr['IDCardRaw']=item。IDCard?'';

dr['PhoneNoRaw']=item。电话号码?'';

>        dt.Rows.Add(dr);
    }

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
        bulkCopy.DestinationTableName = "enc_tmp";
        bulkCopy.BatchSize = dt.Rows.Count;

        bulkCopy.WriteToServer(dt);
    }

    begin = tmpEnd;
    tmpEnd += 5000;

    if (tmpEnd >= end || list == null || !list.Any())
    {
        flag = false;
    }

    Console.WriteLine(begin);
}

 

为保证写入的速度,先不要在那个临时表建索引,等数据写进去后再给Id建索引。

把数据写进临时表后,下面就是直接用SQL脚本来批量更新了。

-- 建索引
create index idx_enc_tmp_id on enc_tmp (id)


-- 批量更新
update dbo.yourtable
set PhoneNo= a.PhoneNo, IDCard = a.IDCard
from dbo.yourtable b
inner join dbo.enc_tmp a
on a.id=b.id
-- 这里更新要看数据库的配置,如果配置高,可以一次更新,不然就建议25万或50万一个批次
-- where a.id >= 0 and a.id <= 500000


-- 查询校验一下
SELECT top 100 [id]     
      ,[IDCard]     
      ,[PhoneNo]
FROM dbo.yourtable WITH (NOLOCK)
where id > 0 and id <= 500000 
order by id asc

-- 清除临时表的数据
truncate table dbo.enc_tmp

-- 删除索引
drop index idx_enc_tmp_id on enc_tmp

 

设计系统的时候,数据安全还真的是不容小觑的,对一些敏感信息还是要加密入库的。

修改数据的过程中,也涉及到了两个知识点,数据的批量插入批量更新

上述内容就是如何批量处理数据库中的敏感信息,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/129608.html

(0)

相关推荐

  • 6组-Alpha冲刺-总结

    技术6组-Alpha冲刺-总结 6组-Alpha冲刺-总结组长博客链接:https://www.cnblogs.com/GuoHail/p/15586232.html
    一、基本情况
    组长博客链接:htt

    礼包 2021年11月22日
  • 如何娇喘,女人为什么那么难以满足

    技术如何娇喘,女人为什么那么难以满足婚前跟一个女孩约过两次,她有男友所以之后一直不答应再约,怎么求都不愿意,求了半年多才有第二次,后来再也不理我,后来就和老婆闪婚了如何娇喘。可能跟那女孩床上太和谐了显得跟老婆做很没意思,

    生活 2021年10月29日
  • rocketmq如何实现事务消息(rocketmq事务消息失败处理)

    技术RocketMQ事务消息如何实现这篇文章主要介绍了RocketMQ事务消息如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。根据上文的描述,发送事

    攻略 2021年12月17日
  • Composer安装及更新YII2框架会遇到什么问题

    技术Composer安装及更新YII2框架会遇到什么问题这篇文章主要为大家展示了“Composer安装及更新YII2框架会遇到什么问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习

    攻略 2021年11月19日
  • 如何深入Tomcat源码分析Session

    技术如何深入Tomcat源码分析Session如何深入Tomcat源码分析Session,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Session到底

    攻略 2021年12月8日
  • Linux WIFI 4G内核怎么配置

    技术Linux WIFI 4G内核怎么配置这篇文章主要介绍“Linux WIFI 4G内核怎么配置”,在日常操作中,相信很多人在Linux WIFI 4G内核怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月30日