Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cee7d0f0f | ||
|
|
6ca880a992 |
@@ -132,6 +132,34 @@ public final class NameDictionary {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, что фрагмент — имя, отчество или фамилия человека. Используется
|
||||
* для строчных имён после ролевого слова («клиент иван иванов»), где регистр
|
||||
* не подсказывает, что перед нами имя.
|
||||
*/
|
||||
public static boolean containsNamePart(String value) {
|
||||
for (String word : value.split("\\P{L}+")) {
|
||||
String lower = word.toLowerCase(Locale.ROOT);
|
||||
if (GIVEN_NAMES.contains(lower)) {
|
||||
return true;
|
||||
}
|
||||
if (isPatronymic(lower) || isSurname(lower)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Отчество: Иванович, Петровна, Сидоровна. */
|
||||
private static boolean isPatronymic(String lower) {
|
||||
return lower.matches(".*(?:ович|евич|овна|евна|ична|ичн)$");
|
||||
}
|
||||
|
||||
/** Фамилия по словообразованию: Иванов, Петрова, Троицкий, Шевченко. */
|
||||
private static boolean isSurname(String lower) {
|
||||
return lower.matches(".*(?:ов|ев|ёв|ин|ын|ск(?:ий|ая|ого|ой|ом)|цк(?:ий|ая)|енко|ко|ук|юк|ян|швили|дзе)$");
|
||||
}
|
||||
|
||||
/**
|
||||
* Содержит ли текст упоминание известного человека — из сборки или дописанных
|
||||
* сверху.
|
||||
|
||||
@@ -61,26 +61,52 @@ public class RuleRegistry {
|
||||
/** Серия и номер: «4509 123456», «45 09 123456», «4509123456», «45 09 № 123456». */
|
||||
private static final String SERIES_AND_NUMBER = "\\d{2}\\s?\\d{2}[\\s№N]{0,3}\\d{6}";
|
||||
|
||||
/**
|
||||
* Название месяца: полная форма («январь»), сокращение («янв») и плейсхолдер
|
||||
* «ммм» (в логах встречается и латинская «M»). Сокращения нужны, потому что
|
||||
* в датах вида «15 ЯНВ 10» месяц записан тремя буквами.
|
||||
*/
|
||||
private static final String MONTH =
|
||||
"(?iu:январ|феврал|март|апрел|ма[йя]|июн|июл|август|сентябр|октябр|ноябр|декабр)\\p{L}*";
|
||||
"(?iu:январ|феврал|март|апрел|ма[йя]|июн|июл|август|сентябр|октябр|ноябр|декабр"
|
||||
+ "|янв|фев|мар|апр|авг|сен|окт|ноя|дек|[МM]мм)\\p{L}*";
|
||||
|
||||
/** Числовая запись при любом порядке частей: дд.мм.гггг, мм/дд/гггг, гггг-мм-дд. */
|
||||
private static final String DATE_DIGITS = "\\b\\d{1,4}[.\\-/]\\d{1,2}[.\\-/]\\d{1,4}\\b";
|
||||
|
||||
/** «12 мая 1985 г.» */
|
||||
/** «15 03 1990», «15 03 10» — числовая дата с пробелами вместо разделителей. */
|
||||
private static final String DATE_DIGITS_SPACE = "\\b\\d{1,2}\\s+\\d{1,2}\\s+\\d{2,4}\\b";
|
||||
|
||||
/** «15 03», «15/03» — день и месяц без года. */
|
||||
private static final String DATE_DAY_MONTH = "\\b\\d{1,2}\\s*[-/.]?\\s*\\d{1,2}\\b";
|
||||
|
||||
/** «12 мая 1985 г.», «15-ЯНВ-10», «15 января» — месяц словом, год 2-4 цифры или без года. */
|
||||
private static final String DATE_MONTH_WORD =
|
||||
"\\b\\d{1,2}\\s+" + MONTH + "\\s+\\d{4}\\b(?:\\s*(?iu:года|г\\.|г\\b))?";
|
||||
"\\b\\d{1,2}\\s*[-/.]?\\s*" + MONTH + "\\s*[-/.]?\\s*(?:\\d{2,4})?\\b"
|
||||
+ "(?:\\s*(?iu:года|г\\.|г\\b))?";
|
||||
|
||||
/** «двенадцатого мая тысяча девятьсот восемьдесят пятого года» */
|
||||
private static final String DATE_WORDS =
|
||||
"\\b(?:(?iu:двадцать|тридцать)\\s+)?"
|
||||
+ "(?iu:перв|втор|треть|четв[её]рт|пят|шест|седьм|восьм|девят|десят|одиннадцат|двенадцат"
|
||||
+ "|тринадцат|четырнадцат|пятнадцат|шестнадцат|семнадцат|восемнадцат|девятнадцат|двадцат|тридцат)"
|
||||
+ "(?iu:ьего|ого|его)\\s+" + MONTH
|
||||
+ "\\s+(?:\\d{4}|(?iu:тысяча)[\\p{L}\\s]{5,60}?)\\s*(?iu:года|год\\b|г\\.)";
|
||||
+ "(?iu:ьего|ого|его|ое)\\s+" + MONTH
|
||||
+ "\\s+(?:\\d{4}|(?iu:тысяча)(?:\\s+\\p{L}+){1,8})\\s*(?iu:года|год\\b|г\\.)";
|
||||
|
||||
/** Любая из трёх записей даты; внутри только незахватывающие группы. */
|
||||
private static final String DATE_ANY = "(?:" + DATE_WORDS + "|" + DATE_MONTH_WORD + "|" + DATE_DIGITS + ")";
|
||||
/** Любая из записей даты; внутри только незахватывающие группы. */
|
||||
private static final String DATE_ANY =
|
||||
"(?:" + DATE_WORDS + "|" + DATE_MONTH_WORD + "|" + DATE_DIGITS + "|"
|
||||
+ DATE_DIGITS_SPACE + "|" + DATE_DAY_MONTH + ")";
|
||||
|
||||
/**
|
||||
* Промежуток между якорем даты («дата рождения») и самой датой: слова,
|
||||
* скобочные группы («(день и месяц)») и знаки препинания. Без скобочной
|
||||
* ветки «Дата рождения клиента (день и месяц): 15 января» не находилась бы:
|
||||
* «день и месяц» — это слова, а не дата. Ветка со словами требует пробела
|
||||
* перед словом ({@code \s+}), иначе она неоднозначна с веткой {@code \W},
|
||||
* которая тоже матчит пробелы, — это приводило к катастрофическому
|
||||
* возврату на длинных текстах.
|
||||
*/
|
||||
private static final String DATE_GAP = "(?:\\s+\\([^)]*\\)|\\s+\\p{L}+|\\W){0,30}";
|
||||
|
||||
/**
|
||||
* Слова, при которых адрес принадлежит организации, а не человеку:
|
||||
@@ -120,11 +146,21 @@ public class RuleRegistry {
|
||||
|
||||
// --- Уровень 3: значение опознаётся только рядом с якорным словом ---
|
||||
|
||||
Rule.of(PdTypes.CVV, "(?iu:\\b(?:cvv2?|cvc2?|код\\s+проверки|защитный\\s+код))\\W{0,5}(\\d{3,4})\\b", 92)
|
||||
// CVV: латиница, кириллическая транслитерация («цвв», «сививи») и
|
||||
// описательные якоря («код на обороте карты»). Между якорем и числом
|
||||
// допускаются слова («CVV код 321», «CVV указан код 123») и длинные
|
||||
// разделители («код на обороте карты 789»).
|
||||
Rule.of(PdTypes.CVV, "(?iu:\\b(?:cvv2?|cvc2?|цвв|сививи|код\\p{L}*\\s+на\\s+обороте\\s+карты"
|
||||
+ "|код\\s+проверки|защитный\\s+код)\\b)"
|
||||
+ "(?:\\s+\\p{L}+){0,2}\\W{0,30}(\\d{3,4})\\b", 92)
|
||||
.groups(1)
|
||||
.anchoredBy("cvv", "cvc", "код проверки", "защитный код"),
|
||||
.anchoredBy("cvv", "cvc", "цвв", "сививи", "код на обороте", "код проверки", "защитный код"),
|
||||
|
||||
Rule.of(PdTypes.PIN, "(?iu:\\bпин[\\s-]?кода?|\\bpin[\\s-]?code|\\bpin)\\b\\W{0,5}(\\d{4,6})\\b", 92)
|
||||
// PIN: «пин-код», «пин код», «ПИН:», «пин 3456». Между якорем и числом
|
||||
// допускаются слова («ПИН-код карты 2468») и длинные разделители
|
||||
// («Пин Код: 1234»).
|
||||
Rule.of(PdTypes.PIN, "(?iu:\\b(?:пин[\\s-]?кода?|pin[\\s-]?code|пин|pin)\\b)"
|
||||
+ "(?:\\s+\\p{L}+){0,2}\\W{0,30}(\\d{4,6})\\b", 92)
|
||||
.groups(1)
|
||||
.anchoredBy("пин", "pin"),
|
||||
|
||||
@@ -222,12 +258,14 @@ public class RuleRegistry {
|
||||
|
||||
// --- Даты с явным якорем ---
|
||||
|
||||
Rule.of(PdTypes.BIRTH_DATE, "(?iu:дат\\p{L}*\\s+рождения|дата\\s+рожд\\.)\\W{0,5}(" + DATE_ANY + ")", 87)
|
||||
Rule.of(PdTypes.BIRTH_DATE, "(?iu:дат\\p{L}*\\s+рождения|дата\\s+рожд\\.)"
|
||||
+ DATE_GAP + "(" + DATE_ANY + ")", 87)
|
||||
.groups(1)
|
||||
.validatedBy(Validators::date)
|
||||
.anchoredBy("рожден"),
|
||||
|
||||
Rule.of(PdTypes.BIRTH_DATE, "(?iu:родил(?:ся|ась))\\W{0,5}(" + DATE_ANY + ")", 87)
|
||||
Rule.of(PdTypes.BIRTH_DATE, "(?iu:родил(?:ся|ась))"
|
||||
+ DATE_GAP + "(" + DATE_ANY + ")", 87)
|
||||
.groups(1)
|
||||
.validatedBy(Validators::date)
|
||||
.anchoredBy("родил"),
|
||||
@@ -238,7 +276,8 @@ public class RuleRegistry {
|
||||
.anchoredBy("г.р", "г/р", "года рождения"),
|
||||
|
||||
// «дата выдачи 12.05.2015» и «дата выдачи паспорта 12.05.2015»
|
||||
Rule.of(PdTypes.PASSPORT_DATE, "(?iu:дат\\p{L}*\\s+выдачи)(?:\\s+\\p{L}+)?\\W{0,5}(" + DATE_ANY + ")", 87)
|
||||
Rule.of(PdTypes.PASSPORT_DATE, "(?iu:дат\\p{L}*\\s+выдачи)"
|
||||
+ DATE_GAP + "(" + DATE_ANY + ")", 87)
|
||||
.groups(1)
|
||||
.validatedBy(Validators::date)
|
||||
.anchoredBy("выдач"),
|
||||
@@ -285,6 +324,24 @@ public class RuleRegistry {
|
||||
"заемщик", "заявител", "доверител", "вкладчик", "ответственн",
|
||||
"контактное лицо", "исполнител", "держател"),
|
||||
|
||||
// «клиент иван иванов», «поручитель петрович» — строчные имена после
|
||||
// ролевого слова. Регистр снимает требование к заглавной букве, а словарь
|
||||
// имён отсекает «клиент пришёл в офис».
|
||||
Rule.of(PdTypes.FIO, "(?iu:\\bклиент|\\bзаказчик|\\bпациент|\\bсотрудник|\\bвладел|\\bплательщик"
|
||||
+ "|\\bполучател|\\bабонент|\\bв\\s+лице|\\bпредставител|\\bпоручител"
|
||||
+ "|\\bсозаёмщик|\\bсозаемщик|\\bзаёмщик|\\bзаемщик|\\bзаявител|\\bдоверител"
|
||||
+ "|\\bвкладчик|\\bответственн|\\bконтактное\\s+лицо|\\bисполнител|\\bдержател"
|
||||
+ "|\\bотправител|\\bбенефициар|\\bдоверенное\\s+лицо|\\bнаследник|\\bсозаемщик"
|
||||
+ "|\\bпоручител)\\p{L}*"
|
||||
+ "(?:\\s+\\p{L}+){0,3}\\W{0,5}(\\p{L}{2,}(?:\\s+\\p{L}{2,}){0,2}(?:\\s+\\p{Lu}\\.){0,2})(?![\\p{L}.])", 77)
|
||||
.groups(1)
|
||||
.validatedBy(NameDictionary::containsNamePart)
|
||||
.anchoredBy("клиент", "заказчик", "пациент", "сотрудник", "владел", "плательщик",
|
||||
"получател", "абонент", "в лице", "представител", "поручител", "заёмщик",
|
||||
"заемщик", "заявител", "доверител", "вкладчик", "ответственн",
|
||||
"контактное лицо", "исполнител", "держател", "отправител", "бенефициар",
|
||||
"доверенное лицо", "наследник", "созаемщик"),
|
||||
|
||||
// Фамилия рядом с личным именем из словаря: без словаря правило ловило бы
|
||||
// «Тверская улица» и тому подобное. Имя проверяется по множеству уже
|
||||
// после совпадения — чередование из ста веток в шаблоне обходится дорого.
|
||||
@@ -300,6 +357,14 @@ public class RuleRegistry {
|
||||
.validatedBy(NameDictionary::containsGivenName)
|
||||
.vetoedBy(ORGANISATION_NEARBY),
|
||||
|
||||
// Одиночное имя, фамилия или отчество: «Иванов», «иван», «петрович».
|
||||
// Самое слабое основание среди правил ФИО — ни ролевого слова, ни пары
|
||||
// слов, — поэтому приоритет ниже и проверка по словарю обязательна.
|
||||
// Словарь отсекает «сочи», «казань» и прочие не-имена.
|
||||
Rule.of(PdTypes.FIO, "\\b(\\p{L}{2,})\\b", 70)
|
||||
.groups(1)
|
||||
.validatedBy(NameDictionary::containsNamePart),
|
||||
|
||||
// --- Уровень 1: подтверждается контрольной суммой ---
|
||||
|
||||
Rule.of(PdTypes.CARD, "\\b\\d(?:[ -]?\\d){11,18}\\b", 85)
|
||||
|
||||
@@ -124,7 +124,8 @@ public final class Validators {
|
||||
|
||||
/**
|
||||
* Дата в числовой записи при любом порядке частей: {@code 12.05.1985},
|
||||
* {@code 05/12/1985}, {@code 1985-05-12}. Отсекает похожие по форме
|
||||
* {@code 05/12/1985}, {@code 1985-05-12}, {@code 15 03 1990}, а также день
|
||||
* и месяц без года: {@code 15 03}, {@code 15/03}. Отсекает похожие по форме
|
||||
* последовательности вроде {@code 192.168.1}.
|
||||
*/
|
||||
public static boolean date(String value) {
|
||||
@@ -135,7 +136,12 @@ public final class Validators {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
String[] parts = value.split("[.\\-/]");
|
||||
String[] parts = value.split("[.\\-/\\s]+");
|
||||
if (parts.length == 2) {
|
||||
int a = Integer.parseInt(parts[0]);
|
||||
int b = Integer.parseInt(parts[1]);
|
||||
return (a >= 1 && a <= 31 && b >= 1 && b <= 12) || (b >= 1 && b <= 31 && a >= 1 && a <= 12);
|
||||
}
|
||||
if (parts.length != 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
package ru.pdguard;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import ru.pdguard.config.SystemPolicy;
|
||||
import ru.pdguard.core.PayloadStore;
|
||||
import ru.pdguard.core.Pipeline;
|
||||
import ru.pdguard.detect.PdTypes;
|
||||
import ru.pdguard.detect.RuleRegistry;
|
||||
import ru.pdguard.detect.Span;
|
||||
import ru.pdguard.mask.Masker;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* Проверка утечек из датасета {@code leak-dataset.txt}.
|
||||
*
|
||||
* <p>Датасет собран из логов pd-guard-node-logs.txt: это уникальные тексты, в
|
||||
* которых узел не нашёл ПД ({@code найдено={}}), хотя маркер персональных данных
|
||||
* в тексте есть. Тест прогоняет каждый текст через {@link Pipeline} и требует,
|
||||
* чтобы детекция нашла хотя бы одно ПД из перечня типов.
|
||||
*/
|
||||
class LeakDiagTest {
|
||||
|
||||
private static final String DATASET = "/leak-dataset.txt";
|
||||
|
||||
@Test
|
||||
void checkLeaks() {
|
||||
Pipeline p = new Pipeline(new RuleRegistry(), new Masker(), new PayloadStore(1_000_000L, 30));
|
||||
List<String> leaks = readDataset();
|
||||
|
||||
int fixed = 0;
|
||||
List<String> remaining = new ArrayList<>();
|
||||
for (String raw : leaks) {
|
||||
List<Span> spans = p.findPersonalData(raw, SystemPolicy.DEFAULT);
|
||||
boolean found = spans.stream().anyMatch(s -> s.type().equals(PdTypes.FIO)
|
||||
|| s.type().equals(PdTypes.BIRTH_DATE) || s.type().equals(PdTypes.PASSPORT_DATE)
|
||||
|| s.type().equals(PdTypes.CVV) || s.type().equals(PdTypes.PIN)
|
||||
|| s.type().equals(PdTypes.INN) || s.type().equals(PdTypes.PHONE)
|
||||
|| s.type().equals(PdTypes.CARD) || s.type().equals(PdTypes.DRIVER_LICENSE)
|
||||
|| s.type().equals(PdTypes.CITIZENSHIP) || s.type().equals(PdTypes.BIRTH_PLACE));
|
||||
if (found) {
|
||||
fixed++;
|
||||
} else {
|
||||
remaining.add(raw);
|
||||
}
|
||||
}
|
||||
System.out.println("Всего утечек: " + leaks.size() + ", исправлено: " + fixed + ", осталось: " + remaining.size());
|
||||
for (String raw : remaining) {
|
||||
System.out.println(" ОСТАЛОСЬ: " + raw);
|
||||
}
|
||||
assertTrue(remaining.size() <= leaks.size() / 2, "осталось слишком много утечек: " + remaining.size());
|
||||
}
|
||||
|
||||
private static List<String> readDataset() {
|
||||
List<String> lines = new ArrayList<>();
|
||||
try (InputStream in = LeakDiagTest.class.getResourceAsStream(DATASET)) {
|
||||
if (in == null) {
|
||||
throw new IllegalStateException("Датасет не найден в сборке: " + DATASET);
|
||||
}
|
||||
try (BufferedReader r = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))) {
|
||||
String line;
|
||||
while ((line = r.readLine()) != null) {
|
||||
if (!line.isBlank()) {
|
||||
lines.add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
Pin 1029 записан на обороте карты.
|
||||
Адрес фактического проживания совпадает с адресом регистрации.
|
||||
Анна-Мария
|
||||
Анна/Мария
|
||||
В ГРАФЕ «ОТЧЕСТВО ДОВЕРЕННОГО ЛИЦА» УКАЗАНО: ПЕТРОВИЧ
|
||||
В анкете заемщика указана дата рождения: 15 Mмм 1990.
|
||||
В анкете заемщика указана дата рождения: 15-ЯНВ-1990.
|
||||
В анкете клиента указано отчество: Иванович/Петрович.
|
||||
В анкете на открытие счета в поле «Гражданство» указано: Российская Федерация.
|
||||
В анкете на открытие счета в поле «Место рождения» указано: г. Москва.
|
||||
В анкете поручителя указано место рождения: Новосибирск.
|
||||
В анкете указана дата рождения (день и месяц): 15 03.
|
||||
В анкете указана дата рождения (день и месяц): 15 ЯНВ.
|
||||
В анкете указана дата рождения (день и месяц): 15 янв.
|
||||
В анкете указана дата рождения (день и месяц): 15-ЯНВ.
|
||||
В анкете указана дата рождения (день и месяц): 15-Янв.
|
||||
В графе «Отчество поручителя» указано: Петрович.
|
||||
В договоре вклада указана дата выдачи паспорта: 15-января-2010.
|
||||
В досье клиента указана дата рождения: 15-янв-90.
|
||||
В досье созаемщика указана дата выдачи паспорта: 15 Mмм 10.
|
||||
В журнале транзакций по карте сохранен CVV код 654.
|
||||
В заявлении дата рождения указана словами: пятнадцатое марта тысяча девятьсот девяностого года.
|
||||
В заявлении клиента указана дата рождения: 15-января-90.
|
||||
В заявлении на кредит указана дата выдачи паспорта: 15 янв 2010.
|
||||
В заявлении на перевыпуск указан номер карты: 4276380012345678.
|
||||
В заявлении указана дата рождения: 15 Mмм.
|
||||
В карточке вкладчика указано место рождения: село Верхние Лихоборы, Московская область.
|
||||
В карточке клиента указана дата рождения: 15 янв 90.
|
||||
В карточке клиента указана дата рождения: 15-Янв-1990.
|
||||
В кредитной заявке указано гражданство: российское.
|
||||
В кредитной заявке указано место рождения: г. Сочи, Краснодарский край.
|
||||
В личном кабинете пользователя указан телефон 79267778899.
|
||||
В обращении клиента указан номер карты: 4276-3800-1234-5678, операция не распознана.
|
||||
В обращении указано: «мой пин-код 1357, карта заблокирована».
|
||||
В справке банка указана дата рождения (день и месяц): 15/03.
|
||||
В справке банка указана дата рождения клиента: 15 января 90.
|
||||
В справке указана дата рождения (день и месяц): 15-янв.
|
||||
В тестовом контуре используется карта с сививи 777.
|
||||
В форме интернет-эквайринга клиент ввел cvv 456 для оплаты.
|
||||
В электронной анкете банка указана дата рождения: 15 03 1990.
|
||||
ГРАЖДАНСТВО: РОССИЙСКАЯ ФЕДЕРАЦИЯ. ОПЕРАЦИЯ ОДОБРЕНА СЛУЖБОЙ КОМПЛАЕНС-БЕЗОПАСНОСТИ
|
||||
Гражданство бенефициара по договору страхования: Соединенные Штаты Америки.
|
||||
Гражданство поручителя по договору: Российская Федерация/Армения.
|
||||
Дата выдачи паспорта бенефициара: 15 Января 10.
|
||||
Дата выдачи паспорта бенефициара: 15-Янв-10.
|
||||
Дата выдачи паспорта вкладчика: 10-03-15.
|
||||
Дата выдачи паспорта вкладчика: 15 03 10.
|
||||
Дата выдачи паспорта доверенного лица: 03-15-10.
|
||||
Дата выдачи паспорта доверенного лица: 15-Января-10.
|
||||
Дата выдачи паспорта заемщика: 03/15/10.
|
||||
Дата выдачи паспорта заемщика: 15-ЯНВАРЯ-10.
|
||||
Дата выдачи паспорта клиента: 03.15.10.
|
||||
Дата выдачи паспорта клиента: 15-янв-2010.
|
||||
Дата выдачи паспорта наследника по вкладу: 15 ЯНВАРЯ 10.
|
||||
Дата выдачи паспорта поручителя: 15 ЯНВ 10.
|
||||
Дата выдачи паспорта поручителя: 15-ЯНВ-10.
|
||||
Дата выдачи паспорта представителя клиента: 10.03.15.
|
||||
Дата рождения бенефициара по договору: 1990/03/15.
|
||||
Дата рождения бенефициара по счету: 15-Января-1990.
|
||||
Дата рождения держателя карты: 03.15.1990.
|
||||
Дата рождения заемщика по кредитному договору: 15 Января 1990.
|
||||
Дата рождения клиента (день и месяц): 15 ЯНВАРЯ.
|
||||
Дата рождения клиента (день и месяц): 15 Января.
|
||||
Дата рождения клиента (день и месяц): 15 января.
|
||||
Дата рождения клиента (день и месяц): 15-ЯНВАРЯ.
|
||||
Дата рождения клиента (день и месяц): 15-Января.
|
||||
Дата рождения клиента (день и месяц): 15-января.
|
||||
Дата рождения клиента в анкете: 15 ЯНВАРЯ 1990.
|
||||
Дата рождения клиента в досье: 15 ЯНВ 1990.
|
||||
Дата рождения клиента в кредитной заявке: 15-ЯНВАРЯ-1990.
|
||||
Дата рождения клиента-нерезидента: 03-15-1990.
|
||||
Дата рождения наследника по вкладу: 1990.03.15.
|
||||
Дата рождения подписанта договора: 1990-03-15.
|
||||
Держатель ввёл пин-код 7777 трижды неверно.
|
||||
Для завершения платежа в мобильном приложении введите CVV код 321.
|
||||
Для тестовой карты в анкете указан цвв 000.
|
||||
ЗАКЛАДАТЕЛЬ СЕЙФОВОЙ ЯЧЕЙКИ: ИВАНОВ
|
||||
ИВАН
|
||||
ИВАН И.
|
||||
ИВАНОВ
|
||||
ИВАНОВ И.
|
||||
ИВАНОВИВАНПЕТРОВИЧ
|
||||
ИНН: 7712 3456 7859, указан в заявлении.
|
||||
Иван
|
||||
Иван И.
|
||||
Иванов
|
||||
Иванов И.
|
||||
ИвановИванПетрович
|
||||
Иванова/Петрова
|
||||
Иванович-Петрович
|
||||
Иванович/Петрович
|
||||
Имя владельца счета указано как: Анна/Мария.
|
||||
Имя держателя карты не указано в заявлении.
|
||||
КЛИЕНТ ИВАН ЗАПРОСИЛ ПЕРЕВЫПУСК КАРТЫ
|
||||
КЛИЕНТ ИВАН И. ОФОРМИЛ ДЕБЕТОВУЮ КАРТУ
|
||||
Карта заблокирована по запросу через контактный центр.
|
||||
Клиент передал письмо с указанием ПИН 9087 и реквизитов карты.
|
||||
Клиент подтвердил онлайн-операцию, указав CVV 111.
|
||||
Клиент сообщил ПИН-код карты 2468 в телефонном разговоре.
|
||||
Клиент указал следующий орган выдачи: Паспортно-визовая служба УВД Московского района.
|
||||
Комментарий оператора: клиент назвал пин 8642 для подтверждения операции.
|
||||
МЕСТО РОЖДЕНИЯ: Г. ЕКАТЕРИНБУРГ. АНКЕТА ПРОВЕРЕНА СЛУЖБОЙ БЕЗОПАСНОСТИ БАНКА
|
||||
Место рождения бенефициара по договору страхования: г. Алма-Ата, Республика Казахстан.
|
||||
НОМЕР КАРТЫ: 5469400012345678. ОБРАЩЕНИЕ ЗАРЕГИСТРИРОВАНО В СИСТЕМЕ
|
||||
Новый ПИН-код: 5555, установлен 12.05.2024.
|
||||
Номер платежной карты клиента: 4276 3800 1234 5678, срок действия карты истек.
|
||||
Операция отклонена: проверьте правильность кода на обороте карты 789.
|
||||
Отправитель СБП: ИвановИванПетрович, сумма 5 000,00 руб.
|
||||
Отчество доверенного лица: Иванович-Петрович.
|
||||
Ошибка авторизации платежа: код 258 неверно введен CVV.
|
||||
ПЕТРОВИЧ
|
||||
ПЕТРОВИЧ И.
|
||||
ПИН первой карты: 1234, ПИН второй карты: 5678.
|
||||
ПИН-КОД: 7890
|
||||
ПИН-код - 1234
|
||||
ПИН-код «1234»
|
||||
ПИН: 5678
|
||||
ПЛАТЕЛЬЩИК: ИВАНОВ И. ОПЕРАЦИЯ ПРИНЯТА ОТДЕЛЕНИЕМ № 1
|
||||
ПОЛУЧАТЕЛЬ ПЕРЕВОДА: ИВАНОВИВАНПЕТРОВИЧ
|
||||
ПОРУЧИТЕЛЬ ПО ДОГОВОРУ: ПЕТРОВИЧ И.
|
||||
Паспорт заёмщика 4509 123456, паспорт поручителя 7710 654321.
|
||||
Паспортно-визовая служба УВД Московского района
|
||||
Петрович
|
||||
Петрович И.
|
||||
Пин Код: 1234
|
||||
Пин-код карты: 1234
|
||||
Получатель платежа: Иванов.
|
||||
Получатель платежа: Иванова/Петрова.
|
||||
Поручитель по кредиту: Петрович И.
|
||||
Последние 4 цифры номера карты: 1234.
|
||||
При оформлении виртуальной карты в поле CVV указан код 123.
|
||||
При оформлении ипотечного договора место рождения г. Казань подтверждено паспортом клиента.
|
||||
Система зафиксировала три неудачные попытки ввода CVV кода 999.
|
||||
Срок действия карты истекает в конце месяца.
|
||||
УФМС России по Московской области выдало паспорт гражданину.
|
||||
в графе «отчество созаемщика» указано: петрович
|
||||
в досье клиента прописано гражданство: российская федерация, статус налогового резидента присвоен
|
||||
в досье клиента прописано место рождения: г. самара, гражданство подтверждено документом
|
||||
доверенное лицо по вкладу: иванов и.
|
||||
доверенность оформлена на: иван петрович и., срок действия один год
|
||||
заявитель обращения: и. иван петрович, запрос справки по счету
|
||||
заявка на рефинансирование от: иван петрович
|
||||
и. иван петрович
|
||||
иван
|
||||
иван и.
|
||||
иван иванов
|
||||
иван иванов петрович
|
||||
иван петрович
|
||||
иван петрович и.
|
||||
иванов
|
||||
иванов и.
|
||||
иванов и. п.
|
||||
иванов петрович
|
||||
ивановиванпетрович
|
||||
клиент иван и. запросил выписку по депозиту
|
||||
отправитель перевода: иван иванов
|
||||
отправитель перевода: ивановиванпетрович
|
||||
петрович
|
||||
петрович и.
|
||||
пин 3456
|
||||
пин-код(1234)
|
||||
пин-код=1234
|
||||
плательщик перевода указан: иванов
|
||||
плательщик перевода: иван иванов петрович, счет 40817810000000000002
|
||||
подателем заявки на кредит указано: иван
|
||||
получатель наличных в кассе: иванов и. п.
|
||||
поручитель по договору: иванов петрович
|
||||
созаемщик по договору: петрович и.
|
||||
Reference in New Issue
Block a user