当前位置: 首页 > news >正文

设计师必须知道的网站江苏省建设集团是国企吗

设计师必须知道的网站,江苏省建设集团是国企吗,页面模板怎么放到自定义菜单,短视频运营招聘数据脱敏方案 什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的#xff1a; 数据脱敏#xff0c;指对某些敏感信息通过脱敏规则进行数据的变形#xff0c;实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏…数据脱敏方案 什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的 数据脱敏指对某些敏感信息通过脱敏规则进行数据的变形实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。在涉及客户安全数据或者一些商业性敏感数据的情况下在不违反系统规则条件下对真实数据进行改造并提供测试使用如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。是数据库安全技术之一。 总的来说数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形实现敏感隐私数据的可靠保护。 在数据脱敏过程中通常会采用不同的算法和技术以根据不同的需求和场景对数据进行处理。例如对于身份证号码可以使用掩码算法masking将前几位数字保留其他位用 “X” 或 “*” 代替对于姓名可以使用伪造pseudonymization算法将真实姓名替换成随机生成的假名。 常用脱敏规则 常用脱敏规则是为了保护敏感数据的安全性在处理和存储敏感数据时对其进行变换或修改。 下面是几种常见的脱敏规则 替换(常用)将敏感数据中的特定字符或字符序列替换为其他字符。例如将信用卡号中的中间几位数字替换为星号*或其他字符。删除将敏感数据中的部分内容随机删除。比如将电话号码的随机 3 位数字进行删除。重排将原始数据中的某些字符或字段的顺序打乱。例如将身份证号码的随机位交错互换。加噪在数据中注入一些误差或者噪音达到对数据脱敏的效果。例如在敏感数据中添加一些随机生成的字符。加密常用使用加密算法将敏感数据转换为密文。例如将银行卡号用 MD5 或 SHA-256 等哈希函数进行散列。 常用脱敏工具 Hutool Hutool 一个 Java 基础工具类对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装组成各种 Util 工具类同时提供以下组件 模块介绍hutool-aopJDK 动态代理封装提供非 IOC 下的切面支持hutool-bloomFilter布隆过滤提供一些 Hash 算法的布隆过滤hutool-cache简单缓存实现hutool-core核心包括 Bean 操作、日期、各种 Util 等hutool-cron定时任务模块提供类 Crontab 表达式的定时任务hutool-crypto加密解密模块提供对称、非对称和摘要算法封装hutool-dbJDBC 封装后的数据操作基于 ActiveRecord 思想hutool-dfa基于 DFA 模型的多关键字查找hutool-extra扩展模块对第三方封装模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等hutool-http基于 HttpUrlConnection 的 Http 客户端封装hutool-log自动识别日志实现的日志门面hutool-script脚本执行封装例如 Javascripthutool-setting功能更强大的 Setting 配置文件和 Properties 封装hutool-system系统参数调用封装JVM 信息等hutool-jsonJSON 实现hutool-captcha图片验证码实现hutool-poi针对 POI 中 Excel 和 Word 的封装hutool-socket基于 Java 的 NIO 和 AIO 的 Socket 封装hutool-jwtJSON Web Token (JWT) 封装实现 可以根据需求对每个模块单独引入也可以通过引入hutool-all方式引入所有模块本文所使用的数据脱敏工具就是在 hutool.core 模块。 现阶段最新版本的 Hutool 支持的脱敏数据类型如下基本覆盖了常见的敏感信息。 用户 id中文姓名身份证号座机号手机号地址电子邮件密码中国大陆车牌包含普通车辆、新能源车辆银行卡 一行代码实现脱敏 Hutool 提供的脱敏方法如下图所示 注意Hutool 脱敏是通过 * 来代替敏感信息的具体实现是在 StrUtil.hide 方法中如果我们想要自定义隐藏符号则可以把 Hutool 的源码拷出来重新实现即可。 这里以手机号、银行卡号、身份证号、密码信息的脱敏为例下面是对应的测试代码。 import cn.hutool.core.util.DesensitizedUtil; import org.junit.Test; import org.springframework.boot.test.context.Spring BootTest;/**** description: Hutool实现数据脱敏*/ Spring BootTest public class HuToolDesensitizationTest {Testpublic void testPhoneDesensitization(){String phone13723231234;System.out.println(DesensitizedUtil.mobilePhone(phone)); //输出137****1234}Testpublic void testBankCardDesensitization(){String bankCard6217000130008255666;System.out.println(DesensitizedUtil.bankCard(bankCard)); //输出6217 **** **** *** 5666}Testpublic void testIdCardNumDesensitization(){String idCardNum411021199901102321;//只显示前4位和后2位System.out.println(DesensitizedUtil.idCardNum(idCardNum,4,2)); //输出4110************21}Testpublic void testPasswordDesensitization(){String passwordwww.jd.com_35711;System.out.println(DesensitizedUtil.password(password)); //输出****************} }以上就是使用 Hutool 封装好的工具类实现数据脱敏。 配合 JackSon 通过注解方式实现脱敏 现在有了数据脱敏工具类如果前端需要显示数据数据的地方比较多我们不可能在每个地方都调用一个工具类这样就显得代码太冗余了那我们如何通过注解的方式优雅的完成数据脱敏呢 如果项目是基于 Spring Boot 的 web 项目则可以利用 Spring Boot 自带的 jackson 自定义序列化实现。它的实现原来其实就是在 json 进行序列化渲染给前端时进行脱敏。 第一步脱敏策略的枚举。 /*** author* description:脱敏策略枚举*/ public enum DesensitizationTypeEnum {//自定义MY_RULE,//用户idUSER_ID,//中文名CHINESE_NAME,//身份证号ID_CARD,//座机号FIXED_PHONE,//手机号MOBILE_PHONE,//地址ADDRESS,//电子邮件EMAIL,//密码PASSWORD,//中国大陆车牌包含普通车辆、新能源车辆CAR_LICENSE,//银行卡BANK_CARD }上面表示支持的脱敏类型。 第二步定义一个用于脱敏的 Desensitization 注解。 Retention (RetentionPolicy.RUNTIME)运行时生效。Target (ElementType.FIELD)可用在字段上。JacksonAnnotationsInside此注解可以点进去看一下是一个元注解主要是用户打包其他注解一起使用。JsonSerialize上面说到过该注解的作用就是可自定义序列化可以用在注解上方法上字段上类上运行时生效等等根据提供的序列化类里面的重写方法实现自定义序列化。 /*** author*/ Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) JacksonAnnotationsInside JsonSerialize(using DesensitizationSerialize.class) public interface Desensitization {/*** 脱敏数据类型在MY_RULE的时候startInclude和endExclude生效*/DesensitizationTypeEnum type() default DesensitizationTypeEnum.MY_RULE;/*** 脱敏开始位置包含*/int startInclude() default 0;/*** 脱敏结束位置不包含*/int endExclude() default 0; }注只有使用了自定义的脱敏枚举 MY_RULE 的时候开始位置和结束位置才生效。 第三步创建自定的序列化类 这一步是我们实现数据脱敏的关键。自定义序列化类继承 JsonSerializer实现 ContextualSerializer 接口并重写两个方法。 /*** author* description: 自定义序列化类*/ AllArgsConstructor NoArgsConstructor public class DesensitizationSerialize extends JsonSerializerString implements ContextualSerializer {private DesensitizationTypeEnum type;private Integer startInclude;private Integer endExclude;Overridepublic void serialize(String str, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {switch (type) {// 自定义类型脱敏case MY_RULE:jsonGenerator.writeString(CharSequenceUtil.hide(str, startInclude, endExclude));break;// userId脱敏case USER_ID:jsonGenerator.writeString(String.valueOf(DesensitizedUtil.userId()));break;// 中文姓名脱敏case CHINESE_NAME:jsonGenerator.writeString(DesensitizedUtil.chineseName(String.valueOf(str)));break;// 身份证脱敏case ID_CARD:jsonGenerator.writeString(DesensitizedUtil.idCardNum(String.valueOf(str), 1, 2));break;// 固定电话脱敏case FIXED_PHONE:jsonGenerator.writeString(DesensitizedUtil.fixedPhone(String.valueOf(str)));break;// 手机号脱敏case MOBILE_PHONE:jsonGenerator.writeString(DesensitizedUtil.mobilePhone(String.valueOf(str)));break;// 地址脱敏case ADDRESS:jsonGenerator.writeString(DesensitizedUtil.address(String.valueOf(str), 8));break;// 邮箱脱敏case EMAIL:jsonGenerator.writeString(DesensitizedUtil.email(String.valueOf(str)));break;// 密码脱敏case PASSWORD:jsonGenerator.writeString(DesensitizedUtil.password(String.valueOf(str)));break;// 中国车牌脱敏case CAR_LICENSE:jsonGenerator.writeString(DesensitizedUtil.carLicense(String.valueOf(str)));break;// 银行卡脱敏case BANK_CARD:jsonGenerator.writeString(DesensitizedUtil.bankCard(String.valueOf(str)));break;default:}}Overridepublic JsonSerializer? createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {if (beanProperty ! null) {// 判断数据类型是否为String类型if (Objects.equals(beanProperty.getType().getRawClass(), String.class)) {// 获取定义的注解Desensitization desensitization beanProperty.getAnnotation(Desensitization.class);// 为nullif (desensitization null) {desensitization beanProperty.getContextAnnotation(Desensitization.class);}// 不为nullif (desensitization ! null) {// 创建定义的序列化类的实例并且返回入参为注解定义的type,开始位置结束位置。return new DesensitizationSerialize(desensitization.type(), desensitization.startInclude(),desensitization.endExclude());}}return serializerProvider.findValueSerializer(beanProperty.getType(), beanProperty);}return serializerProvider.findNullValueSerializer(null);} }经过上述三步已经完成了通过注解实现数据脱敏了下面我们来测试一下。 首先定义一个要测试的 pojo对应的字段加入要脱敏的策略。 /**** description:*/ Data NoArgsConstructor AllArgsConstructor public class TestPojo {private String userName;Desensitization(type DesensitizationTypeEnum.MOBILE_PHONE)private String phone;Desensitization(type DesensitizationTypeEnum.PASSWORD)private String password;Desensitization(type DesensitizationTypeEnum.MY_RULE, startInclude 0, endExclude 2)private String address; }接下来写一个测试的 controller RestController public class TestController {RequestMapping(/test)public TestPojo testDesensitization(){TestPojo testPojo new TestPojo();testPojo.setUserName(我是用户名);testPojo.setAddress(地球中国-北京市通州区京东总部2号楼);testPojo.setPhone(13782946666);testPojo.setPassword(sunyangwei123123123.);System.out.println(testPojo);return testPojo;}}可以看到我们成功实现了数据脱敏。 Apache ShardingSphere ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar计划中这 3 款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能 。 Apache ShardingSphere 下面存在一个数据脱敏模块此模块集成的常用的数据脱敏的功能。其基本原理是对用户输入的 SQL 进行解析拦截并依靠用户的脱敏配置进行 SQL 的改写从而实现对原文字段的加密及加密字段的解密。最终实现对用户无感的加解密存储、查询。 通过 Apache ShardingSphere 可以自动化透明化数据脱敏过程用户无需关注脱敏中间实现细节。并且提供了多种内置、第三方(AKS)的脱敏策略用户仅需简单配置即可使用。 FastJSON 平时开发 Web 项目的时候除了默认的 Spring 自带的序列化工具FastJson 也是一个很常用的 Spring Web Restful 接口序列化的工具。 FastJSON 实现数据脱敏的方式主要有两种 基于注解 JSONField 实现需要自定义一个用于脱敏的序列化的类然后在需要脱敏的字段上通过 JSONField 中的 serializeUsing 指定为我们自定义的序列化类型即可。基于序列化过滤器需要实现 ValueFilter 接口重写 process 方法完成自定义脱敏然后在 JSON 转换时使用自定义的转换策略。 Mybatis-mate MybatisPlus 也提供了数据脱敏模块 mybatis-mate。mybatis-mate 为 MybatisPlus 企业级模块使用之前需要配置授权码付费旨在更敏捷优雅处理数据。 配置内容如下所示 # Mybatis Mate 配置 mybatis-mate:cert:grant: jxftsdfggggxlicense: GKXP9r4MCJhGID/DTGigcBcLmZjb1YZGjE4GXaAoxbtGsPC20sxpEtiUr2F7Nb1ANTUekvF6Syo6DzraA4M4oacMyBatis-Flex 类似于 MybatisPlusMyBatis-Flex 也是一个 MyBatis 增强框架。MyBatis-Flex 同样提供了数据脱敏功能并且是可以免费使用的。 MyBatis-Flex 提供了 ColumnMask() 注解以及内置的 9 种脱敏规则开箱即用 用户名脱敏手机号脱敏固定电话脱敏身份证号脱敏车牌号脱敏地址脱敏邮件脱敏密码脱敏银行卡号脱敏 /*** 内置的数据脱敏方式*/ public class Masks {/*** 手机号脱敏*/public static final String MOBILE mobile;/*** 固定电话脱敏*/public static final String FIXED_PHONE fixed_phone;/*** 身份证号脱敏*/public static final String ID_CARD_NUMBER id_card_number;/*** 中文名脱敏*/public static final String CHINESE_NAME chinese_name;/*** 地址脱敏*/public static final String ADDRESS address;/*** 邮件脱敏*/public static final String EMAIL email;/*** 密码脱敏*/public static final String PASSWORD password;/*** 车牌号脱敏*/public static final String CAR_LICENSE car_license;/*** 银行卡号脱敏*/public static final String BANK_CARD_NUMBER bank_card_number;//... }使用示例 Table(tb_account) public class Account {Id(keyType KeyType.Auto)private Long id;ColumnMask(Masks.CHINESE_NAME)private String userName;ColumnMask(Masks.EMAIL)private String email;}如果这些内置的脱敏规则不满足你的要求的话你还可以自定义脱敏规则。 作者声明 如有问题欢迎指正
http://www.dnsts.com.cn/news/110526.html

相关文章:

  • 个人网站的版权怎么写江苏省建设类高工申报网站
  • 做视频网站的技能韩国ps教程网站
  • 邢台在百度上做个网站wordpress 改成中文
  • 网站开发设计合同网站建设费用 知乎
  • 动态表情包在线制作网站wordpress速度慢图片
  • wap网站方案服饰怎么做网站推广
  • 前端开发入门薪水郑州关键词优化费用
  • 做网站约需要多少钱秦皇岛pc端网站建设
  • 网站开发收费标准文档网站建设定制单
  • 有域名建网站需要多少钱搭建网站大概需要多少钱
  • 温州做网站建设公司如何免费注册企业邮箱
  • 网站设计的原始资料济南著名网站建设
  • 哈尔滨网站开发需要多少钱鞍山诺亚人才网
  • 中国建设银行湖南分行官网站北京手机网站
  • 网站做排名有用吗淘宝宝贝关键词排名查询工具
  • 网站建设 岗位职责广东联通通信建设有限公司 网站
  • 企业标准版网站建设海淀seo搜索引擎优化公司
  • 广州推广网站清远最新消息
  • 网站免费虚拟主机申请杨凌开发建设局网站
  • 金华市有网站建设最低价免费科技软件
  • h5可以做网站吗加密软件代理
  • 百度网站的目标一个公司做两个网站可以吗
  • 怎么建设一个响应式网站wordpress怎么开发
  • 银川专业做网站的公司搜索引擎营销sem包括
  • 营销型手机网站服务器的作用
  • 光谷做网站推广多少钱现在怎么做跨境电商平台
  • 游戏平台网站开发长沙做网站seo优化外包
  • 福建工程网站建设团队网站备案一次吗
  • 写出网站建设的基本流程宣传海报模板
  • 网站页面上的悬浮窗怎么做wordpress个人工作室主题