关于sql关键字及敏感数据脱敏

数据脱敏相关

  • 数据脱敏
  • 数字类型数据脱敏
  • sql关键字脱敏

数据脱敏

数据脱敏是经常会遇到的需求,很常见。
尤其是一些客户数据,如身份证号、手机号码等。
脱敏规则也不尽相同,这里列举两种,作为参考吧。

数字类型数据脱敏

近期刚好处理了一个甲方提出的需求,接口中返回数据,需要判断包含的数字连续位数,如果超过六位,则进行脱敏。脱敏规则是保留最后六位,其余数字用星号“*”代替。
话不多说,用代码说明:

String content = "abc1234567def890";
Pattern pattern = Pattern.compile("\\d{6,}");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {System.out.println(matcher.group());
}

此处,字符串 content 代表接口返回的参数,其中包含了超过六位数的连续数字。
这段代码中,正则表达式中的\d表示匹配数字,{6,}表示匹配6个或更多个数字。在Matcher对象的find()方法中,每次匹配到符合条件的子串时,可以通过group()方法获取该子串。

获取子串后,根据脱敏规则,进行脱敏:

public static String keepLastFourDigits(String str) {int len = str.length();if (len <= 6) {return str;} else {String lastFourDigits = str.substring(len - 6);String start = "";for (int i = 0; i < len - 6; i++) {start += "*";}return start + lastFourDigits;}
}

执行结果:

String str1 = "1234567890";
String str2 = "123456";
String str3 = "12";
System.out.println(keepLastFourDigits(str1)); // 输出:****567890
System.out.println(keepLastFourDigits(str2)); // 输出:123456
System.out.println(keepLastFourDigits(str3)); // 输出:12

可以看到,脱敏数据符合规则。
最终应用到需求中,只需要再用脱敏后的子串替换掉脱敏前的子串即可。

sql关键字脱敏

其实是属于防 sql 注入的一种方式,当进行数据保存时,对数据进行校验,若内容中包括 sql 关键字,如select、update、delete、union等,有可能在某些条件下对系统的正常运行造成影响。
根据需求,需要将保存信息中的指定关键字脱敏,规则是保留首字母,后面用星号代替。实际应用中,除sql关键字外,也包含了一些js关键字,如alert等。
代码说明:

public class CheckSensitiveWordsUtil(){private final static sensitiveWords = "select,update,alert";public static String replaceSensitiveWords(String input) {String output = input;String[] wordsArr = sensitiveWords.split(",");for(String s : wordsArr){output = output.replaceAll("(?i)"+s, s.substring(0,1)+"*");}return output;}
}

这里使用了正则表达式来匹配字符串中的“select”、“alert”等,并且使用了“(?i)”来忽略大小写。然后使用replaceAll方法将匹配到的字符串替换成首字母加上“*”的形式。
测试代码:

String input = "This is a select statement and an update statement.";
String output = replaceSensitiveWords(input);
System.out.println(output);

执行结果:

This is a s* statement and an u* statement.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】守护线程是什么?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 我的其他博客 正文 在计算机编程中&#xff0c;守护线程&#xff08;daemon thread&#xff09;是一种在程序运行时在后台提供服务的线程…

2024021期传足14场胜负前瞻

2024021期赛事由亚洲杯2场、英超5场&#xff0c;德甲6场、非洲杯1场组成。售止时间为2月3日&#xff08;周六&#xff09;19点00分&#xff0c;敬请留意&#xff1a; 本期1.5以下赔率3场&#xff0c;1.5-2.0赔率3场&#xff0c;其他场次基本皆是平半盘、平盘。本期14场整体难度…

【详细教程】Kubernetes集群部署:使用kubeadm创建集群

文章目录 一、虚拟机准备&#xff08;一&#xff09;主机基本配置&#xff08;二&#xff09;安装docker&#xff08;三&#xff09;配置cri-docker环境&#xff08;四&#xff09;安装kubeadm、kubelet、kubectl&#xff08;五&#xff09;克隆主机 二、环境配置工作&#xff…

Python 3 中,使用 Memcached

在 Python 3 中&#xff0c;使用 Memcached&#xff0c;一个高性能的分布式内存对象缓存系统&#xff0c;可以通过多个第三方库来实现。这些库允许 Python 应用程序与 Memcached 服务器进行通信&#xff0c;从而缓存数据以加快应用程序的响应速度和提高效率。最常用的库之一是 …

CDN高防IP:技术解析与相关问题解答

在使用CDN高防IP技术的过程中&#xff0c;可能会遇到一些问题。下面是一些常见问题和相应的解答&#xff0c;希望能帮助读者更好地了解和使用CDN高防IP技术。 问题一&#xff1a;什么是CDN高防IP技术&#xff1f; 解答&#xff1a;CDN高防IP技术是一种通过将网站流量分散到多…

LeetCode:138. 随机链表的复制之如何有效copy

自己复制的话&#xff0c;很容易写出来一个时间复杂度O&#xff08;n ^ 2&#xff09; 空O&#xff08;n&#xff09;的做法 我们可以参考基因的复制&#xff0c; 目录 题目&#xff1a; 实现思路&#xff08;基因复制式的copy&#xff09;&#xff1a; 官方快慢指针解法&…

R语言学习case6:ggplot基础画图(Scatter散点图)

step1: 导入ggplot2库文件 library(ggplot2)step2&#xff1a;带入自带的iris数据集 iris <- datasets::irisstep3&#xff1a;查看数据信息 dim(iris)维度为 [150,5] head(iris)查看数据前6行的信息 step4&#xff1a;利用ggplot工具包绘图 plot1 <- ggplot(iris…

解决WARNING: IPv4 forwarding is disabled. Networking will not work的具体操作步骤

IPv4转发禁用警告&#xff1a;网络无法正常工作 在使用网络连接的过程中&#xff0c;我们可能遇到警告消息“WARNING: IPv4 forwarding is disabled. Networking will not work”&#xff08;警告&#xff1a;IPv4转发已禁用&#xff0c;网络将无法正常工作&#xff09;。这个…

【sentinel流量卫兵搭建与微服务整合】

sentinel流量卫兵搭建与微服务整合 搭建sentinel dashboard控制台微服务整合 搭建sentinel dashboard控制台 1、下载 官网链接 由于官网github网络原因&#xff0c;导致长时间下载失败。 网盘链接 网盘提取码&#xff1a;dwgj 2、运行 将下载jar包放在任意非中文、不包含特殊…

Mac如何设置一位数密码?

一、问题 Mac如何设置一位数密码&#xff1f; 二、解答 1、打开终端 2、清除全局账户策略 sudo pwpolicy -clearaccountpolicies 输入开机密码&#xff0c;这里是看不见的&#xff0c;输入完回车即可 3、重新设置密码 &#xff08;1&#xff09;打开设置-->用户和群组…

Next.js初识

Next.js初识 Next.js&#xff1a;这是一个用于生产环境的React 框架&#xff08;国外用的比较多&#xff09;。 Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验&#xff1a;包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能 无需任何配…

Android平台如何实现RTSP转GB28181

为什么要做GB28181设备接入侧&#xff1f; 实际上&#xff0c;在做Android平台GB28181设备接入模块的时候&#xff0c;我们已经有了非常好的技术积累&#xff0c;比如RTMP推送、轻量级RTSP服务、一对一互动模块、业内几乎最好的RTMP|RTSP低延迟播放器。 Android平台GB28181接…

爱、自由与创造——教育改革的三大基石

爱、自由与创造——教育改革的三大基石 Love, Freedom, and Creativity: The Three Pillars of Educational Reform 在当今社会快速发展的背景下&#xff0c;创造性思维的重要性日益凸显。然而&#xff0c;我们必须认识到&#xff0c;创造性并非凭空产生&#xff0c;而是深深植…

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别总结

目录 前言 1、常见消息队列 1.ActiveMQ 2.RabbitMQ 3.RocketMQ 4.Kafka 2、区别 1.消息传递模型 2.消息持久化 3.消息顺序性 4.可靠性 5.生态系统和社区支持 6.表格对比 前言 消息队列可以实现应用程序之间的异步通信&#xff0c;能够实现异步消息的发送和接收&am…

MySQL | 一定会走索引却没有走的原因,日志报conversion相关错误

TL;DR&#xff1a;函数作用于表字段时&#xff0c;索引会失效。 具体情况 Indexes如下&#xff1a; SQL如下&#xff1a; explain select *from accounting_status_flow_tab_00000000WHERE ( client_no 6848134000 and loan_no 0119324345936016261000 )order by modif…

【python接口自动化】- PyMySQL数据连接

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

前端工程化基础(三):Webpack基础

Webpack和打包过程 学习webpack主要是为了了解目前前端开发的整体流程&#xff0c;实际开发中&#xff0c;我们并不需要去手动配置&#xff0c;因为框架的脚手架都已经帮助我们完成了配置 内置模块path 该模块在Webpack中会经常使用 从路径中获取信息 const path require(&qu…

[Python] 什么是逻辑回归模型?使用scikit-learn中的LogisticRegression来解决乳腺癌数据集上的二分类问题

什么是线性回归和逻辑回归&#xff1f; 线性回归是一种用于解决回归问题的统计模型。它通过建立自变量&#xff08;或特征&#xff09;与因变量之间的线性关系来预测连续数值的输出。线性回归的目标是找到一条直线&#xff08;或超平面&#xff09;&#xff0c;使得预测值与观…

Eureka实操--下篇

高可用连接方式 1、双机部署&#xff1a;Eureka的server端相互注册&#xff0c;自动相互同步应用信息。Eureka的client端注册到任意一个上面即可&#xff0c;但为了保险起见&#xff0c;可以同时注册到两个上面&#xff0c;防止client注册到server1后&#xff0c;server1挂掉&…

7.NFS服务器

目录 1. 简介 1.1. NFS背景介绍 1.2. 生产应用场景 2. NFS工作原理 2.1. 示例图 2.2. 流程 3. NFS的使用 3.1. 安装 3.2. 配置文件 3.3. 主配置文件分析 3.4. 实验1 3.5. NFS账户映射 3.5.1. 实验2&#xff1a; 3.5.2. 实验3 4. autofs自动挂载服务 4.1. 产生原…