栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

五种自定义脱敏实现方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

五种自定义脱敏实现方式

文章目录

(一)Json序列化实现脱敏(二)使用MyBatis的拦截器功能(三)通过实现ResponseBodyAdvice接口进行返回数据脱敏(四)数据库查询脱敏(五)AOP切面方式实现脱敏

(一)Json序列化实现脱敏

常见的JSON工具包有gson和fastsjon、jackson。我们可以通过对数据的自定义序列化进行脱敏。主要实现就是通过自定义对应标识字段的序列化方式。

(二)使用MyBatis的拦截器功能

如果项目中使用了MyBatis作为持久层框架,那么可以利用框架所提供得拦截器组件进行数据后置的处理。实现原理就是拦截响应回来的结果,然后对结果进行脱敏处理。

public class DesensitizedInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        List list = (List) invocation.proceed();
		//执行自定义的数据脱敏策略

        return list;
    }

}
 
(三)通过实现ResponseBodyAdvice接口进行返回数据脱敏 

Spring提供了ResponseBodyAdvice接口,通过实现这个接口,可以修改返回值直接作为 ResponseBody类型处理器的返回值。
ResponseBodyAdvice仅拦截Controller中所有带有@ResponseBody的方法.
这种处理方式和JSON序列化方式实现相近

public interface ResponseBodyAdvice {
	
	//用来判断是否需要进行特定的操作,比如是否需要脱敏
	boolean supports(MethodParameter returnType, Class> converterType);
	
	// 修改返回数据内容
	T beforeBodyWrite(T body, MethodParameter returnType, MediaType selectedContentType,
			Class> selectedConverterType,
			ServerHttpRequest request, ServerHttpResponse response);

}
(四)数据库查询脱敏

【1】数据在存储时已经以某种算法或者策略进行了非明文存储
【2】通过SQL语句的left()、locate()、substr()、right()、random()等字符串截取,生成随机值,定位等函数,在SQL查询过程中就进行数据的脱敏。
【3】这种方式相对来说最为简单,仅需要修改少量代码,尤其适合于数据分析和大屏展示等场景下。

(五)AOP切面方式实现脱敏

通过AOP的方式在数据入库前进行字段参数的脱敏/加密入库,或者在查询时针对返回值进行拦截处理。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号