Mysql实现数据脱敏

  • Post author:
  • Post category:mysql




Mysql实现数据脱敏

一、数据脱敏解释

在日常开发需求中会经常遇到数据脱敏处理,比如身份证号、手机号,需要使用*进行部分替换显示。这样能使敏感隐私信息在一定程度上得到保护。那么什么是数据脱敏呢?

在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。

二、数据脱敏实现

数据脱敏实现可以从数据库查数据的时候进行处理,可以在查出数据后进行处理。在这里记录了MySQL数据库查询时处理,通过使用mysql字符串函数实现。

三、SQL数据脱敏实现


CONCAT()、LEFT()和RIGHT()字符串函数组合使用,请看下面具体实现


CONCAT(str1,str2,…):返回结果为连接参数产生的字符串

LEFT(str,len):返回从字符串str 开始的len 最左字符

RIGHT(str,len):从字符串str 开始,返回最右len 字符

电话号码及金钱脱敏sql:

SELECT concat(left(customer_user_phone,3),’********’)) AS customer_user_phone

(SELECT concat(left(money,0),’****’)) AS money

SELECT
(SELECT
		concat(
		left(customer_user_phone,
		3),
		'********')) AS customer_user_phone,
(SELECT
		concat(left(money,
		0),
		'****')) AS money 
FROM   
	os_order_form  
WHERE
	create_user != 3 
	AND order_owner_id != 3 
	AND del_flag = 0 
	AND tenant_id = 2 
ORDER BY
	create_time DESC  LIMIT 5;

查询的结果

在这里插入图片描述

以上例子是针对业务需要来实现的,如果需要保留前后数字,只把中间4位电话脱敏,那写法又不一样,如下

SELECT
(SELECT
	concat(
	left(customer_user_phone,
	3),
	'****', right(customer_user_phone, 4))) AS customer_user_phone,
(SELECT
	concat(left(money,
	0),
	'****')) AS money 
FROM   
os_order_form  
WHERE
create_user != 3 
AND order_owner_id != 3 
AND del_flag = 0 
AND tenant_id = 2 
ORDER BY
create_time DESC  LIMIT 5;

查询结果:

在这里插入图片描述



版权声明:本文为csdnlaiyanqi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。