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

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

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

前言

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

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

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

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

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

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

本系统使用的数据库是阿里巴巴云的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)

相关推荐

  • 公式规律,平码三中三公式规律是什么

    技术公式规律,平码三中三公式规律是什么一公式规律、规律如下:
    1、公式主要分为两大类计算,公式前面都有注明。
    2、大小序D:公式前面有注明字母D的为大小序。算法是从小到大。(大小序第一个拼音字母)或直接写明大小序落球

    生活 2021年10月23日
  • 如何进行Java语言规范线程形式的分析

    技术如何进行Java语言规范线程形式的分析如何进行Java语言规范线程形式的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一开始接触Java的时候我们

    攻略 2021年11月21日
  • ASP.NET1.1验证码产生的原理及应用是怎样的

    技术ASP.NET1.1验证码产生的原理及应用是怎样的今天就跟大家聊聊有关ASP.NET1.1验证码产生的原理及应用是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

    攻略 2021年11月26日
  • 怎么用Python修改一张图片的地理位置

    技术怎么用Python修改一张图片的地理位置这篇文章主要介绍“怎么用Python修改一张图片的地理位置”,在日常操作中,相信很多人在怎么用Python修改一张图片的地理位置问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月20日
  • 如何分析针对HTTPS浏览器会话的攻击

    技术如何分析针对HTTPS浏览器会话的攻击如何分析针对HTTPS浏览器会话的攻击,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。关于SSL网站的好消息就是:大

    攻略 2021年11月12日
  • 怎么进行MongoDB和Cassandra以及HBase三种NoSQL数据库比较

    技术怎么进行MongoDB和Cassandra以及HBase三种NoSQL数据库比较本篇文章给大家分享的是有关怎么进行MongoDB和Cassandra以及HBase三种NoSQL数据库比较,小编觉得挺实用的,因此分享给

    攻略 2021年11月3日