Инструменты для маскирования данных
Все чувствительные данные должны быть замаскированы при передаче, поэтому необходимо выполнять маскирование при регистрации. В проектах на основе фреймворка все параметры входящих и исходящих запросов toString, включая все поля, что может привести к непосредственному выводу чувствительных данных.
Разработчики должны иметь возможность легко маскировать поля, которые требуют маскирования, и формат маскирования можно настраивать. Например, для имени показывать только первую букву, а для номера телефона — только первые 5 цифр.
cd sensitive-data
<dependency>
<groupId>com.gitee.fyoutech</groupId>
<artifactId>sensitive-data</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
@Override
public String toString() {
return new MaskToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
}
Добавление аннотации Mask к полям, требующим маскирования. Обратите внимание:
В настоящее время поддерживается только маскирование объектов типа String;
Строки во вложенных объектах также могут быть замаскированы;
Объект, содержащий поле, которое нужно замаскировать, должен наследовать от 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]
/**
* Используется для маскирования
* Создано 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 )