成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

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

plokmju88 / 3726人閱讀

摘要:項(xiàng)目介紹日志脫敏是常見(jiàn)的安全需求。特性基于注解的日志脫敏可以自定義策略實(shí)現(xiàn),策略生效條件常見(jiàn)的脫敏內(nèi)置方案深拷貝,且原始對(duì)象不用實(shí)現(xiàn)任何接口。放在集合屬性上,且屬性為普通對(duì)象作為演示,集合中為普通的字符串。

項(xiàng)目介紹

日志脫敏是常見(jiàn)的安全需求。普通的基于工具類(lèi)方法的方式,對(duì)代碼的入侵性太強(qiáng)。編寫(xiě)起來(lái)又特別麻煩。

本項(xiàng)目提供基于注解的方式,并且內(nèi)置了常見(jiàn)的脫敏方式,便于開(kāi)發(fā)。

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

特性

基于注解的日志脫敏

可以自定義策略實(shí)現(xiàn),策略生效條件

常見(jiàn)的脫敏內(nèi)置方案

java 深拷貝,且原始對(duì)象不用實(shí)現(xiàn)任何接口。

快速開(kāi)始 maven 導(dǎo)入

    com.github.houbb
    sensitive-core
    0.0.2
定義對(duì)象

User.java

我們對(duì) 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()
}
屬性為集合或者對(duì)象

如果某個(gè)屬性是單個(gè)集合或者對(duì)象,則需要使用注解 @SensitiveEntry。

放在集合屬性上,且屬性為普通對(duì)象

會(huì)遍歷每一個(gè)屬性,執(zhí)行上面的脫敏策略。

放在對(duì)象屬性上

會(huì)處理對(duì)象中各個(gè)字段上的脫敏注解信息。

放在集合屬性上,且屬性為對(duì)象

遍歷每一個(gè)對(duì)象,處理對(duì)象中各個(gè)字段上的脫敏注解信息。

放在集合屬性上,且屬性為普通對(duì)象

UserEntryBaseType.java

作為演示,集合中為普通的字符串。

public class UserEntryBaseType {

    @SensitiveEntry
    @Sensitive(strategy = StrategyChineseName.class)
    private List chineseNameList;

    @SensitiveEntry
    @Sensitive(strategy = StrategyChineseName.class)
    private String[] chineseNameArray;
    
    //Getter & Setter & toString()
}

構(gòu)建對(duì)象

/**
 * 構(gòu)建用戶-屬性為列表,列表中為基礎(chǔ)屬性
 * @return 構(gòu)建嵌套信息
 * @since 0.0.2
 */
public static UserEntryBaseType buildUserEntryBaseType() {
    UserEntryBaseType userEntryBaseType = new UserEntryBaseType();
    userEntryBaseType.setChineseNameList(Arrays.asList("盤(pán)古", "女?huà)z", "伏羲"));
    userEntryBaseType.setChineseNameArray(new String[]{"盤(pán)古", "女?huà)z", "伏羲"});
    return userEntryBaseType;
}

測(cè)試演示

/**
 * 用戶屬性中有集合或者map,集合中屬性是基礎(chǔ)類(lèi)型-脫敏測(cè)試
 * @since 0.0.2
 */
@Test
public void sensitiveEntryBaseTypeTest() {
    UserEntryBaseType userEntryBaseType = DataPrepareTest.buildUserEntryBaseType();
    System.out.println("脫敏前原始: " + userEntryBaseType);
    UserEntryBaseType sensitive = SensitiveUtil.desCopy(userEntryBaseType);
    System.out.println("脫敏對(duì)象: " + sensitive);
    System.out.println("脫敏后原始: " + userEntryBaseType);
}

日志信息

脫敏前原始: UserEntryBaseType{chineseNameList=[盤(pán)古, 女?huà)z, 伏羲], chineseNameArray=[盤(pán)古, 女?huà)z, 伏羲]}
脫敏對(duì)象: UserEntryBaseType{chineseNameList=[*古, *媧, *羲], chineseNameArray=[*古, *媧, *羲]}
脫敏后原始: UserEntryBaseType{chineseNameList=[盤(pán)古, 女?huà)z, 伏羲], chineseNameArray=[盤(pán)古, 女?huà)z, 伏羲]}
放在對(duì)象屬性上

演示對(duì)象

這里的 User 和上面的 User 對(duì)象一致。

public class UserEntryObject {

    @SensitiveEntry
    private User user;

    @SensitiveEntry
    private List userList;

    @SensitiveEntry
    private User[] userArray;
    
    //...
}

對(duì)象構(gòu)建

/**
 * 構(gòu)建用戶-屬性為列表,數(shù)組。列表中為對(duì)象。
 * @return 構(gòu)建嵌套信息
 * @since 0.0.2
 */
public static UserEntryObject buildUserEntryObject() {
    UserEntryObject userEntryObject = new UserEntryObject();
    User user = buildUser();
    User user2 = buildUser();
    User user3 = buildUser();
    userEntryObject.setUser(user);
    userEntryObject.setUserList(Arrays.asList(user2));
    userEntryObject.setUserArray(new User[]{user3});
    return userEntryObject;
}

測(cè)試演示

/**
 * 用戶屬性中有集合或者對(duì)象,集合中屬性是對(duì)象-脫敏測(cè)試
 * @since 0.0.2
 */
@Test
public void sensitiveEntryObjectTest() {
    UserEntryObject userEntryObject = DataPrepareTest.buildUserEntryObject();
    System.out.println("脫敏前原始: " + userEntryObject);
    UserEntryObject sensitiveUserEntryObject = SensitiveUtil.desCopy(userEntryObject);
    System.out.println("脫敏對(duì)象: " + sensitiveUserEntryObject);
    System.out.println("脫敏后原始: " + userEntryObject);
}

測(cè)試結(jié)果

脫敏前原始: UserEntryObject{user=User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}, userList=[User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}], userArray=[User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}]}
脫敏對(duì)象: UserEntryObject{user=User{username="脫*君", idCard="123456**********34", password="null", email="123**@qq.com", phone="188****8888"}, userList=[User{username="脫*君", idCard="123456**********34", password="null", email="123**@qq.com", phone="188****8888"}], userArray=[User{username="脫*君", idCard="123456**********34", password="null", email="123**@qq.com", phone="188****8888"}]}
脫敏后原始: UserEntryObject{user=User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}, userList=[User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}], userArray=[User{username="脫敏君", idCard="123456190001011234", password="1234567", email="[email protected]", phone="18888888888"}]}
需求 & BUGS
issues
歡迎加入開(kāi)發(fā)

如果你對(duì)本項(xiàng)目有興趣,并且對(duì)代碼有一定追求,可以申請(qǐng)加入本項(xiàng)目開(kāi)發(fā)。

如果你善于寫(xiě)文檔,或者愿意補(bǔ)全測(cè)試案例,也非常歡迎加入。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72939.html

相關(guān)文章

  • java 日志脫敏框架 sensitive-v0.0.4 系統(tǒng)內(nèi)置常見(jiàn)注解,支持自定義注解

    摘要:項(xiàng)目介紹日志脫敏是常見(jiàn)的安全需求。常見(jiàn)的脫敏內(nèi)置方案。支持用戶自定義注解。自定義注解導(dǎo)入自定義注解新增功能。策略?xún)?yōu)先級(jí)優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。讓這些的密碼不進(jìn)行脫敏定義測(cè)試對(duì)象定義一個(gè)使用自定義注解的對(duì)象。 項(xiàng)目介紹 日志脫敏是常見(jiàn)的安全需求。普通的基于工具類(lèi)方法的方式,對(duì)代碼的入侵性太強(qiáng)。編寫(xiě)起來(lái)又特別麻煩。 本項(xiàng)目提供基于注解的方式,并且內(nèi)置了常見(jiàn)的脫敏...

    cheng10 評(píng)論0 收藏0
  • 阿里巴巴Java代碼規(guī)約插件p3c-pmd使用指南與實(shí)現(xiàn)解析

    摘要:年月底,阿里巴巴集團(tuán)發(fā)布了阿里巴巴開(kāi)發(fā)手冊(cè)終極版,年月日,在杭州云棲大會(huì)上,代碼規(guī)約插件全球首發(fā),插件支持以上版本和以上版本。阿里巴巴代碼規(guī)約插件安裝阿里代碼規(guī)約插件有插件和插件。 2017年9月底,阿里巴巴集團(tuán)發(fā)布了《阿里巴巴Java開(kāi)發(fā)手冊(cè)》PDF終極版,2017年10月14日,在2017杭州云棲大會(huì)上,Java代碼規(guī)約插件全球首發(fā),p3c-pmd插件支持Eclipse4.2以上版...

    worldligang 評(píng)論0 收藏0
  • 余額寶11.11:基于日志數(shù)據(jù)分析高效運(yùn)維

    摘要:接下來(lái)我們以余額寶為例,重點(diǎn)剖析天弘基金在日志數(shù)據(jù)分析領(lǐng)域是如何突破的此前,天弘基金一直使用開(kāi)源的日志方案,研發(fā)和運(yùn)維人員通過(guò)對(duì)日志數(shù)據(jù)進(jìn)行處理,使用日志文件進(jìn)行查詢(xún)檢索。 雙十一剛剛結(jié)束,其實(shí)最緊張的不是商鋪理貨,也不是網(wǎng)友緊盯大促商品準(zhǔn)備秒殺,而是網(wǎng)購(gòu)幕后的運(yùn)維人員,他們最擔(dān)心:什么網(wǎng)絡(luò)中斷、應(yīng)用卡頓、響應(yīng)速度慢,服務(wù)器宕機(jī)……雙十一作為電商 IT 部門(mén)的頭等大事,大促前,運(yùn)維人員就需要...

    wenshi11019 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<