1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fyoutech-sensitive-data

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 4.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 11:18 5b9017c

Инструменты для маскирования данных

Фон

Все чувствительные данные должны быть замаскированы при передаче, поэтому необходимо выполнять маскирование при регистрации. В проектах на основе фреймворка все параметры входящих и исходящих запросов toString, включая все поля, что может привести к непосредственному выводу чувствительных данных.

Цель

Разработчики должны иметь возможность легко маскировать поля, которые требуют маскирования, и формат маскирования можно настраивать. Например, для имени показывать только первую букву, а для номера телефона — только первые 5 цифр.

Адрес Gitee

https://gitee.com/fyoutech/sensitive-data.git

git clone https://gitee.com/fyoutech/sensitive-data.git

cd sensitive-data

Реализация

  1. Импорт пакета зависимостей:
<dependency>
	<groupId>com.gitee.fyoutech</groupId>
	<artifactId>sensitive-data</artifactId>
	<version>2.0.0-SNAPSHOT</version>
</dependency>
  1. Переопределение метода toString в классах BaseRequest и BaseResponse:
@Override
public String toString() {
   return new MaskToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
}
  1. Добавление аннотации Mask к полям, требующим маскирования. Обратите внимание:

  2. В настоящее время поддерживается только маскирование объектов типа String;

  3. Строки во вложенных объектах также могут быть замаскированы;

  4. Объект, содержащий поле, которое нужно замаскировать, должен наследовать от BaseRequest или BaseResponse или переопределять метод toString.

/**
 * Заявка на привязку банковской карты
 * Создано fyoutech
 * Дата: 2016-07-07
 */
public class BindBankCardReq extends TransAcctRequest {
    private static final long serialVersionUID = 1504331879625483383L;
    /*********Четыре элемента end**********/
    /**
     * Настоящее имя
     */
    @NotNull
    @Size(max=30)
    @Mask(prefixNoMaskLen = 1)
    private String name;
    /**
    * Идентификационный номер
    */
    @NotNull
    @Size(max=18)
    @Mask
    private String idNo;
    /**
    * Номер банковской карты
    */
    @NotNull
    @Size(max=20)
    @Mask(suffixNoMaskLen = 4)
    private String bankCardNo;
    /**
    * Резервный номер мобильного телефона банка
    */
    @Size(max=18)
    @Mask(prefixNoMaskLen = 3,suffixNoMaskLen = 3)
    private String mobile;
    /*********Четыре элемента end**********/

Эффект маскирования после печати объекта:

public static void main(String[] args) {
    BindBankCardReq req =  new BindBankCardReq();
    req.setIdNo("310110199999999999");
    req.setBankCardNo("6220622062206220");
    req.setMobile("18888888888");
    req.setCvv2("888");
    req.setMerchantCode("hj");
    req.setBankId("ICBC");
    req.setBankName("工商银行");
    req.setCardType("C");
    req.setEndDate("201909");
    req.setName("郭小明");
    req.setTransAcctType("z1");
    req.setUserId("123456");
    System.out.println(req);
}

toString

BindBankCardReq[name=郭**,idNo=******************,bankCardNo=************6220,mobile=188*****888,bankId=ICBC,bankName=工商银行,cardType=C,cvv2=***,endDate=******,merchantCode=hj,userId=123456,transAcctType=z1]
  1. Подробное описание аннотации Mask:
/**
* Используется для маскирования
* Создано fyoutech
* Дата: 2016-08-04
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Mask {
    /**
    * Длина префикса, который не требует маскирования
    * @return
    */
    int prefixNoMaskLen() default 0;

    /**
    * Длина суффикса, который не требует маскирования
    * @return
    */
    int suffixNoMaskLen() default 0;

    /**
    * Что использовать для маскирования
    * @return
    */
    String maskStr() default "*";
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fyoutech-sensitive-data.git
git@api.gitlife.ru:oschina-mirror/fyoutech-sensitive-data.git
oschina-mirror
fyoutech-sensitive-data
fyoutech-sensitive-data
develop