日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

為了保證用戶的信息安全,敏感信息需要脫敏。

項目開發過程中,每次處理敏感信息的日志問題感覺很麻煩,大部分都是用工具類單獨處理,不利于以后統一管理,很不優雅。

于是,就寫了一個基于 java 注解的日志脫敏工具。

項目介紹

日志脫敏是常見的安全需求。普通的基于工具類方法的方式,對代碼的入侵性太強。編寫起來又特別麻煩。

本項目提供基于注解的方式,并且內置了常見的脫敏方式,便于開發。

用戶也可以基于自己的實際需要,自定義注解。

日志脫敏

為了金融交易的安全性,國家強制規定對于以下信息是要日志脫敏的:

用戶名

手機號

郵箱

銀行卡號

密碼

持久化加密

存儲的時候上面的信息都需要加密,密碼為不可逆加密,其他為可逆加密。

類似的功能有很多。不在本系統的解決范圍內。

特性

基于注解的日志脫敏

可以自定義策略實現,策略生效條件

常見的脫敏內置方案

支持 jdk1.7+

快速開始

maven 導入

com.github.houbb

sensitive-core

0.0.1

定義對象

User.java

我們對 password 使用脫敏,指定脫敏策略為 StrategyPassword。(直接返回 null)

public class User {

@Sensitive(strategy = StrategyChineseName.class)

private String username;

@Sensitive(strategy = StrategyCardId.class)

private String idCard;

@Sensitive(strategy = StrategyPassword.class)

private String password;

@Sensitive(strategy = StrategyEmail.class)

private String email;

@Sensitive(strategy = StrategyPhone.class)

private String phone;

//Getter & Setter

//toString()

}

測試

@Test

public void UserSensitiveTest() {

User user = buildUser();

System.out.println("脫敏前原始: " + user);

User sensitiveUser = SensitiveUtil.desCopy(user);

System.out.println("脫敏對象: " + sensitiveUser);

System.out.println("脫敏后原始: " + user);

}

private User buildUser() {

User user = new User();

user.setUsername("脫敏君");

user.setPassword("123456");

user.setEmail("12345@qq.com");

user.setIdCard("123456190001011234");

user.setPhone("18888888888");

return user;

}

輸出信息如下

脫敏前原始: User{username='脫敏君', idCard='123456190001011234', password='1234567', email='12345@qq.com', phone='18888888888'}

脫敏對象: User{username='脫*君', idCard='123456**********34', password='null', email='123**@qq.com', phone='188****8888'}

脫敏后原始: User{username='脫敏君', idCard='123456190001011234', password='1234567', email='12345@qq.com', phone='18888888888'}

我們可以直接利用 sensitiveUser 去打印日志信息,而這個對象對于代碼其他流程不影響,我們依然可以使用原來的 user 對象。

自定義脫敏策略生效的場景

默認情況下,我們指定的場景都是生效的。

但是你可能需要有些情況下不進行脫敏,比如有些用戶密碼為 123456,你覺得這種用戶不脫敏也罷。

UserPasswordCondition.java

@Sensitive(condition = ConditionFooPassword.class, strategy = StrategyPassword.class)

private String password;

其他保持不變,我們指定了一個 condition,實現如下:

ConditionFooPassword.java

public class ConditionFooPassword implements ICondition {

@Override

public boolean valid(IContext context) {

try {

Field field = context.getCurrentField();

final Object currentObj = context.getCurrentObject();

final String password = (String) field.get(currentObj);

return !password.equals("123456");

} catch (IllegalAccessException e) {

throw new RuntimeException(e);

}

}

}

也就是只有當密碼不是 123456 時密碼脫敏策略才會生效。

針對單個字段

上面的例子是基于注解式的編程,如果你只是單個字段。比如

singleSensitiveTest

@Test

public void singleSensitiveTest() {

final String email = "123456@qq.com";

IStrategy strategy = new StrategyEmail();

final String emailSensitive = (String) strategy.des(email, null);

System.out.println("脫敏后的郵箱:" + emailSensitive);

}

日志信息

脫敏后的郵箱:123***@qq.com

待優化的地方

全新對象創建

這種方式為了避免修改原始對象,創建了一個全新的對象,有點點浪費,可以優化。

其他方法

可以基于 log4j2/logback 等轉換器進行敏感信息的脫敏,但是不具有不同的 log 框架的可移植性。

Springboot + SLF4j + Log4j2 打印異常日志時,耗時要5-6秒

1.使用jps -l 查看springboot項目的進程ID 2.使用命令jstack -l 進程ID > log.txt 打印堆棧信息到文件,內容如下: "http-nio-8065 ...

mybatis結合log4j打印SQL日志

mybatis結合log4j打印SQL日志 1.Maven引用jar包 默認的mybatis不能打印出SQL日志,不便于查看調試,須要結合log4jdbc-log4j2就能夠完整的輸入SQL的調試信息 ...

java 日志脫敏框架 sensitive-v0.0.4 系統內置常見注解,支持自定義注解

項目介紹 日志脫敏是常見的安全需求.普通的基于工具類方法的方式,對代碼的入侵性太強.編寫起來又特別麻煩. 本項目提供基于注解的方式,并且內置了常見的脫敏方式,便于開發. 特性 基于注解的日志脫敏. 可 ...

java 日志脫敏框架 sensitive-新版本0.0.2-深度拷貝,屬性為對象和集合的支持

項目介紹 日志脫敏是常見的安全需求.普通的基于工具類方法的方式,對代碼的入侵性太強.編寫起來又特別麻煩. 本項目提供基于注解的方式,并且內置了常見的脫敏方式,便于開發. 用戶也可以基于自己的實際需要, ...

Java日志脫敏框架 sensitive-v0.0.4 系統內置常見注解,支持自定義注解

項目介紹 日志脫敏是常見的安全需求.普通的基于工具類方法的方式,對代碼的入侵性太強.編寫起來又特別麻煩. 本項目提供基于注解的方式,并且內置了常見的脫敏方式,便于開發. 特性 基于注解的日志脫敏. 可 ...

(網頁)Java日志記錄框架Logback配置詳解(企業級應用解決方案)(轉)

轉自CSDN: 前言 Logback是現在比較流行的一個日志記錄框架,它的配置比較簡單學習成本相對較低,所以剛剛接觸該框架的朋友不要畏懼,多花點耐心很快就能靈活應用了.本篇博文不會具體介紹Logbac ...

Java日志系統框架的設計與實現

推薦一篇好的文章介紹java日志系統框架的設計的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章內容總結: 日志系統對跟蹤調試.程 ...

如何優雅地打印一個Java對象?

你好呀,我是沉默王二,一個和黃家駒一樣身高,和劉德華一樣顏值的程序員.雖然已經寫了十多年的 Java 代碼,但仍然覺得自己是個菜鳥(請允許我慚愧一下). 在一個月黑風高的夜晚,我思前想后,覺得再也不能 ...

隨機推薦

項目管理的一些Tip

最近帶領了一個大概150人天的項目,做一些備注: 1, 知人善用. 排期分任務的時候,要先了解每個團隊成員的特點,包括技術水平.性格,看他是適合做技術難度大的模塊還是適合做業務邏輯復雜的模塊. 2, ...

JVM之Class文件結構

每一個class文件對應一個類或者接口,但是一個類或者接口不一定生成class文件,classloader直接生成. 8為字節為基礎的二進制流,各個數據項按照嚴格的順序排列在class文件中,沒有任何 ...

Ubuntu默認防火墻安裝、啟用、配置、端口、查看狀態相關信息

Ubuntu附帶了一個相對iptables簡單很多的防火墻 配置工具:ufw ufw防火墻 即uncomplicated firewall,不復雜的防火墻,繁瑣部分的設置還是需要去到iptables ...

允許FTP用戶登錄并禁止Shell登錄的方法

最近安裝了vsftpd做FTP服務,發現系統用戶的登錄shell設置為/sbin/nologin,就無法使用FTP服務.網上資料說,vsftpd會為每個FTP登錄用戶去在/etc/shells中檢查對 ...

JavaScript學習匯總

對于JavaScript,還是無法割舍,有心無力,時間總是匆匆,暫且都放在這里吧 javascript中this的使用 寫的很不錯的一偏文章,簡單看了下,mark了吧 原文:http://davids ...

HTTP各個狀態返回值

轉載來自于:http://desert3.iteye.com/blog/1136548 502 Bad Gateway:tomcat沒有啟動起來?504 Gateway Time-out: nginx ...

STL容器迭代器失效分析

連續內存序列容器(vector, string, deque) 對于連續內存序列STL容器,例如vector,string,deque,刪除當前iterator會使得后面所有的iterator都失效, ...

PHP 中運用 elasticsearch

PHP擴展安裝 1. 環境要求:PHP_VERSION >= 5.3.9,composer工具 2. 在E盤新建文件夾命名為elastic,,拷貝composer.phar到 ? ? ?E:/e ...

設計模式_Visitor_訪問者模式

形象例子: 情人節到了,要給每個MM送一束鮮花和一張卡片,可是每個MM送的花都要針 對她個人的特點,每張卡片也要根據個人的特點來挑,我一個人哪搞得清楚,還是找花店老板和禮品店老板做一下Visitor, ...

MSSqlServer 主從同步復制原理(發布/訂閱)

基本模型 1.發布類型: 快照發布:用于為事務復制和合并復制提供初始數據集:在適合數據完全刷新時也可以使用快照復制.利用這三種復制,SQL Server 提供功能強大且靈活的系統,以便使企業范圍內的數 ...

總結

以上是生活随笔為你收集整理的java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。