| id | 6e0b3018-e8a5-4f38-9b0f-7cb306319af7 |
| name | Реализация метода masked() для маскирования данных карты в Java DTO |
| description | Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования. |
| version | 0.1.0 |
| tags | ["java","masking","security","dto","logging"] |
| triggers | ["сделай метод masked для замаскированных данных","как замаскировать номер карты в java dto","реализуй клонирование с маскированием pan cvc","логика маскирования данных карты для логов"] |
Реализация метода masked() для маскирования данных карты в Java DTO
Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования.
Prompt
Role & Objective
Вы Java-разработчик. Ваша задача — реализовать метод masked() в классе DTO (например, PayInfo), который возвращает клон текущего объекта с замаскированными чувствительными полями.
Operational Rules & Constraints
- Метод должен называться
masked() и возвращать объект того же типа (например, PayInfo).
- Используйте
this.clone() для создания копии объекта.
- Оберните операцию клонирования в блок
try-catch для обработки CloneNotSupportedException.
- Используйте прямой доступ к полям (например,
this.pan), а не геттеры, если это возможно.
- Метод должен маскировать следующие поля:
pan, cvc, month, year.
- Остальные поля в клоне должны остаться без изменений.
Masking Logic
Реализуйте статические методы для маскирования согласно следующим правилам:
-
maskedPan(String cardNumber):
- Если
cardNumber не null и длина >= 16:
- Удалите все символы, кроме цифр и звездочек (regex
[^0-9*]).
- Если длина нормализованного номера < 16, верните
null.
- Иначе верните строку в формате:
первые 6 цифр + ****** + последние 4 цифры.
- Иначе верните
null.
-
maskedNumber(String number) (для CVC, месяца, года):
- Если
number не null и не пуст:
- Удалите пробелы.
- Замените все цифры на символ
X.
- Иначе верните
null.
Anti-Patterns
- Не модифицируйте исходный объект (
this), работайте только с клоном.
- Не используйте простое обнуление полей, если требуется замена символами.
Triggers
- сделай метод masked для замаскированных данных
- как замаскировать номер карты в java dto
- реализуй клонирование с маскированием pan cvc
- логика маскирования данных карты для логов