摘要:項目介紹日志脫敏是常見的安全需求。常見的脫敏內(nèi)置方案。支持用戶自定義注解。自定義注解導(dǎo)入自定義注解新增功能。策略優(yōu)先級優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。讓這些的密碼不進行脫敏定義測試對象定義一個使用自定義注解的對象。
項目介紹
日志脫敏是常見的安全需求。普通的基于工具類方法的方式,對代碼的入侵性太強。編寫起來又特別麻煩。
本項目提供基于注解的方式,并且內(nèi)置了常見的脫敏方式,便于開發(fā)。
特性基于注解的日志脫敏。
可以自定義策略實現(xiàn),策略生效條件。
常見的脫敏內(nèi)置方案。
java 深拷貝,且原始對象不用實現(xiàn)任何接口。
支持用戶自定義注解。
自定義注解 maven 導(dǎo)入自定義注解com.github.houbb sensitive-core 0.0.4
v0.0.4 新增功能。允許功能自定義條件注解和策略注解。
案例 自定義注解策略脫敏
/** * 自定義密碼脫敏策略 * @author binbin.hou * date 2019/1/17 * @since 0.0.4 */ @Inherited @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @SensitiveStrategy(CustomPasswordStrategy.class) public @interface SensitiveCustomPasswordStrategy { }
脫敏生效條件
/** * 自定義密碼脫敏策略生效條件 * @author binbin.hou * date 2019/1/17 * @since 0.0.4 */ @Inherited @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @SensitiveCondition(ConditionFooPassword.class) public @interface SensitiveCustomPasswordCondition{ }
TIPS
@SensitiveStrategy 策略多帶帶使用的時候,默認(rèn)是生效的。
如果有 @SensitiveCondition 注解,則只有當(dāng)條件滿足時,才會執(zhí)行脫敏策略。
@SensitiveCondition 只會對系統(tǒng)內(nèi)置注解和自定義注解生效,因為 @Sensitive 有屬于自己的策略生效條件。
策略優(yōu)先級
@Sensitive 優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。
對應(yīng)的實現(xiàn)兩個元注解 @SensitiveStrategy、@SensitiveCondition 分別指定了對應(yīng)的實現(xiàn)。
CustomPasswordStrategy.java
public class CustomPasswordStrategy implements IStrategy { @Override public Object des(Object original, IContext context) { return "**********************"; } }
ConditionFooPassword.java
/** * 讓這些 123456 的密碼不進行脫敏 * @author binbin.hou * date 2019/1/2 * @since 0.0.1 */ public class ConditionFooPassword implements ICondition { @Override public boolean valid(IContext context) { try { Field field = context.getCurrentField(); final Object currentObj = context.getCurrentObject(); final String name = (String) field.get(currentObj); return !name.equals("123456"); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } }定義測試對象
定義一個使用自定義注解的對象。
public class CustomPasswordModel { @SensitiveCustomPasswordCondition @SensitiveCustomPasswordStrategy private String password; @SensitiveCustomPasswordCondition @SensitiveStrategyPassword private String fooPassword; //其他方法 }測試
/** * 自定義注解測試 */ @Test public void customAnnotationTest() { final String originalStr = "CustomPasswordModel{password="hello", fooPassword="123456"}"; final String sensitiveStr = "CustomPasswordModel{password="**********************", fooPassword="123456"}"; CustomPasswordModel model = buildCustomPasswordModel(); Assert.assertEquals(originalStr, model.toString()); CustomPasswordModel sensitive = SensitiveUtil.desCopy(model); Assert.assertEquals(sensitiveStr, sensitive.toString()); Assert.assertEquals(originalStr, model.toString()); }
構(gòu)建對象的方法如下:
/** * 構(gòu)建自定義密碼對象 * @return 對象 */ private CustomPasswordModel buildCustomPasswordModel(){ CustomPasswordModel model = new CustomPasswordModel(); model.setPassword("hello"); model.setFooPassword("123456"); return model; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/73063.html
摘要:項目介紹日志脫敏是常見的安全需求。特性基于注解的日志脫敏可以自定義策略實現(xiàn),策略生效條件常見的脫敏內(nèi)置方案深拷貝,且原始對象不用實現(xiàn)任何接口。放在集合屬性上,且屬性為普通對象作為演示,集合中為普通的字符串。 項目介紹 日志脫敏是常見的安全需求。普通的基于工具類方法的方式,對代碼的入侵性太強。編寫起來又特別麻煩。 本項目提供基于注解的方式,并且內(nèi)置了常見的脫敏方式,便于開發(fā)。 用戶也可以...
摘要:注解有以下幾個知識點元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解注解處理器本文先介紹前面?zhèn)€知識點元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解。注解相當(dāng)于是一種嵌入在程序中的元數(shù)據(jù),可以使用注解解析工具或編譯器對其進行解析,也可以指定注解在編譯期或運行期有效。 大家好,我是樂字節(jié)的小樂,上次說過了Java多態(tài)的6大特性|樂字節(jié),接下來我們來看看Java編程里的注解。showImg(https://segme...
摘要:中的詳解必修個多線程問題總結(jié)個多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運行原理從虛擬機工作流程看運行原理。 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 基于 POI 封裝 ExcelUtil 精簡的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對于 ...
摘要:特性支持過程式編程基于字節(jié)碼的代理重試基于注解的重試,允許自定義注解無縫接入接口與注解的統(tǒng)一解決與中的不足之處設(shè)計目的綜合了和的優(yōu)勢?;谧止?jié)碼實現(xiàn)的代理重試,可以不依賴。提供基于代碼模式字節(jié)碼增強實現(xiàn)的方式。 Sisyphus 支持過程式編程和注解編程的 java 重試框架。 特性 支持 fluent 過程式編程 基于字節(jié)碼的代理重試 基于注解的重試,允許自定義注解 無縫接入 sp...
摘要:我自己總結(jié)的學(xué)習(xí)的系統(tǒng)知識點以及面試問題,已經(jīng)開源,目前已經(jīng)。目前最新的版本中模塊的組件已經(jīng)被廢棄掉,同時增加了用于異步響應(yīng)式處理的組件。每一次請求都會產(chǎn)生一個新的,該僅在當(dāng)前內(nèi)有效。顯而易見,這種模式存在很多問題。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識點以及面試問題,已經(jīng)開源,目前已經(jīng) 41k+ Star。會一直完善下去,歡迎建議和指導(dǎo),同時也歡迎Star: https://githu...
閱讀 3230·2023-04-26 00:49
閱讀 3887·2021-09-29 09:45
閱讀 1195·2019-08-29 18:47
閱讀 2829·2019-08-29 18:37
閱讀 2897·2019-08-29 16:37
閱讀 3440·2019-08-29 13:24
閱讀 1856·2019-08-27 10:56
閱讀 2456·2019-08-26 11:42