Перейти к содержанию

Типы PII

PII Detector поддерживает 20+ типов персональных данных на русском и английском языках.

Input PII (обнаружение в запросах пользователя)

Контактные данные

EMAIL — Электронная почта

Свойство Значение
Метод детекции Regex + валидация RFC 5322
Библиотека валидации email_validator
Confidence (regex) 0.95
Confidence (после валидации) 0.97
Примеры user@example.com, john.doe+tag@company.co.uk
Маска j***@***.com

PHONE — Телефонный номер

Свойство Значение
Метод детекции Regex (9 паттернов) + валидация libphonenumber
Библиотека валидации phonenumbers (Google libphonenumber)
Confidence (regex) 0.85
Confidence (после валидации) 0.90
Поддерживаемые форматы Россия (+7, 8), международные (+1, +44, ...), US (XXX) XXX-XXXX
Примеры +7 (903) 123-45-67, 89031234567, +1 (555) 123-4567
Маска +7 (***) ***-**-67

Паттерны для российских номеров:

  • +7 (XXX) XXX-XX-XX — канонический.
  • +7-XXX-XXX-XX-XX — через дефис.
  • +7XXXXXXXXXX — компактный.
  • 8 (XXX) XXX-XX-XX — внутренний (prefix 8).
  • 8XXXXXXXXXX — компактный внутренний.

IP_ADDRESS — IP-адрес

Свойство Значение
Метод детекции Regex + валидация октетов (0–255, без ведущих нулей)
Confidence 0.90
Примеры 192.168.1.100, 10.0.0.1
Маска ***.***.***.100

Финансовые данные

CREDIT_CARD — Номер кредитной карты

Свойство Значение
Метод детекции Regex (4 паттерна) + Luhn algorithm
Confidence (regex) 0.90
Confidence (после Luhn) 0.95
Поддерживаемые сети Visa (4xxx), MasterCard (51xx–55xx), Amex (34xx/37xx), Discover (6011/65xx)
Форматы 4111111111111111, 4111-1111-1111-1111, 4111 1111 1111 1111
Маска ****-****-****-1111 (последние 4 цифры сохраняются)

Алгоритм Luhn (валидация):

Номер: 4111 1111 1111 1111
1. Удалить пробелы/дефисы → 4111111111111111
2. Справа налево, удвоить каждую вторую цифру
3. Если результат > 9, вычесть 9
4. Сумма всех цифр должна делиться на 10
→ Valid (сумма = 0 mod 10)

IBAN — International Bank Account Number

Свойство Значение
Метод детекции Regex
Confidence 0.92
Формат 2 буквы (страна) + 2 контрольные цифры + 10–30 алфанумерических
Примеры DE89370400440532013000, GB29 NWBK 6016 1331 9268 19

SWIFT_BIC — SWIFT/BIC-код банка

Свойство Значение
Метод детекции Regex
Confidence 0.88
Формат 8 или 11 символов: 4 (банк) + 2 (страна) + 2 (локация) + 3 (филиал, опционально)
Примеры DEUTDEFF, SABRRUMM

Государственные идентификаторы

INN — Индивидуальный номер налогоплательщика (Россия)

Свойство Значение
Метод детекции Regex + контекст + checksum-валидация ФНС
Confidence (bare, без контекста) 0.75
Confidence (с контекстом «ИНН», «inn») 0.92
Confidence (после checksum) 0.95
Форматы 10 цифр (физлицо) или 12 цифр (юрлицо)
Примеры 7707083893 (10 цифр), 500100732259 (12 цифр)
Маска **********

Алгоритм checksum ФНС:

10-значный ИНН:
  weights = [2, 4, 10, 3, 5, 9, 4, 6, 8]
  check = (Σ weights[i] × digit[i], i=0..8) mod 11 mod 10
  Валиден, если check == digit[9]

12-значный ИНН:
  weights_11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
  check_11 = (Σ weights_11[i] × digit[i], i=0..9) mod 11 mod 10
  weights_12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
  check_12 = (Σ weights_12[i] × digit[i], i=0..10) mod 11 mod 10
  Валиден, если check_11 == digit[10] AND check_12 == digit[11]

SNILS — Страховой номер индивидуального лицевого счёта (Россия)

Свойство Значение
Метод детекции Regex + контекст + checksum-валидация ПФР
Confidence (форматированный) 0.80
Confidence (с контекстом) 0.95
Confidence (после checksum) 0.95
Форматы XXX-XXX-XXX XX (форматированный), XXXXXXXXXXX (11 цифр, с контекстом)
Примеры 112-233-445 95, 11223344595
Маска ***-***-*** **

Алгоритм checksum ПФР:

СНИЛС: 112-233-445 95 → цифры: [1,1,2,2,3,3,4,4,5] + контроль [9,5]
  total = Σ digit[i] × (9 - i), i=0..8
  total = 1×9 + 1×8 + 2×7 + 2×6 + 3×5 + 3×4 + 4×3 + 4×2 + 5×1 = 95
  expected = total mod 101 mod 100 = 95
  Валиден, если expected == 95 (контрольное число)

PASSPORT — Паспорт РФ

Свойство Значение
Метод детекции Regex + контекст обязателен (слова «паспорт», «серия», «passport» в радиусе 50 символов)
Confidence (без контекста) 0.70
Confidence (с контекстом) 0.92
Формат Серия (2+2 цифры) + номер (6 цифр): XX XX XXXXXX или XXXX XXXXXX
Примеры 45 12 123456, 4512 123456
Маска ** ** ******

SSN — Social Security Number (США)

Свойство Значение
Метод детекции Regex
Confidence 0.90
Формат XXX-XX-XXXX или XXX XX XXXX
Примеры 123-45-6789

Персональные данные (NER)

PERSON_NAME — ФИО / Имя

Свойство Значение
Метод детекции NER
Confidence (EN) 0.70
Confidence (RU) 0.70
Confidence (RU, расширенный) 0.82 (выше за счёт лучшей обработки падежей)
Примеры Иванов Иван Иванович, John Doe, Петрову Алексею (дательный падеж)
Фильтрация FP Стоп-лист: местоимения (Он, Она, Они), служебные слова (Данные, Номер, Запрос)

ORGANIZATION — Организация

Свойство Значение
Метод детекции NER
Confidence (EN) 0.68
Confidence (RU) 0.78
Статус Отключён по умолчанию (высокий FPR — обычные слова распознаются как организации)
Примеры ООО "Ромашка", Google, Сбербанк

DATE_OF_BIRTH — Дата рождения

Свойство Значение
Метод детекции Regex + контекст (слова «родился», «дата рождения», «д.р.», «dob» в радиусе 80 символов)
Confidence (NER) 0.60
Confidence (regex + контекст) 0.88
Форматы DD.MM.YYYY (01.01.1990), текстовый (15 марта 1985 года)

Токены и секреты

JWT_TOKEN — JSON Web Token

Свойство Значение
Метод детекции Regex (структурный паттерн)
Confidence 0.99
Паттерн eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+
Примеры eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjg...

API_KEY — API-ключи различных сервисов

Свойство Значение
Метод детекции Regex (структурные паттерны по провайдерам)
Confidence 0.95–0.99

Конкретные паттерны:

Провайдер Префикс Паттерн Confidence
OpenAI sk- sk-[A-Za-z0-9]{48} 0.99
Anthropic sk-ant- sk-ant-[A-Za-z0-9\-]{95,} 0.99
Google AIza AIza[0-9A-Za-z_-]{35} 0.99
AWS Access Key AKIA AKIA[0-9A-Z]{16} 0.99
Generic (с контекстом) Контекст api_key=, api_secret= + [A-Za-z0-9_-]{20,} 0.95

GITHUB_TOKEN — Токены GitHub

Свойство Значение
Метод детекции Regex (5 структурных паттернов)
Confidence 0.99
Тип Префикс Назначение
Personal access token ghp_ Доступ к API GitHub
OAuth access token gho_ OAuth-приложения
User-to-server token ghu_ GitHub Apps (user)
Server-to-server token ghs_ GitHub Apps (server)
Refresh token ghr_ Обновление токенов

PASSWORD — Пароли (с контекстом)

Свойство Значение
Метод детекции Regex + контекст обязателен
Confidence 0.95
Контекстные слова password=, passwd=, pwd=, пароль=, user_password=
Примеры password=MySecr3t!, пароль: qwerty123

Output PII (обнаружение в ответах LLM)

Все Input PII типы также обнаруживаются в ответах. Дополнительно — 6 типов, специфичных для утечек из LLM:

DATABASE_URI — Строки подключения к базам данных

Свойство Значение
Confidence 0.99
Поддерживаемые СУБД PostgreSQL, MySQL, MongoDB (+SRV), Redis, AMQP, MSSQL, Elasticsearch, SQLite, ADO.NET
Примеры postgresql://admin:secret@prod-db:5432/main, mongodb+srv://user:pass@cluster.mongodb.net/db, Server=db;Database=main;User=sa;Password=secret

PRIVATE_KEY — Приватные ключи (PEM-формат)

Свойство Значение
Confidence 0.99
Поддерживаемые типы RSA, EC, DSA, OpenSSH
Паттерн -----BEGIN [RSA\|EC\|DSA\|OPENSSH ]PRIVATE KEY----- ... -----END ... PRIVATE KEY-----

ENV_VAR_SECRET — Секреты в переменных окружения

Свойство Значение
Confidence 0.97
Паттерны SECRET_KEY=value, export PASSWORD=value, os.environ["API_KEY"], os.getenv("JWT_SECRET", "value")
Контекстные имена SECRET, PASSWORD, PASSWD, PWD, API_KEY, JWT_SECRET, DATABASE_URL, PRIVATE_KEY и др.

INTERNAL_IP — Внутренние IP-адреса

Свойство Значение
Confidence 0.90
RFC 1918 диапазоны 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.1
Внутренние домены *.internal, *.local, *.corp, *.intranet, *.lan

SERVER_PATH — Серверные пути файловой системы

Свойство Значение
Confidence 0.85
Linux /etc/passwd, /etc/shadow, /root/.ssh/, /var/log/, /opt/, /srv/, /proc/
Windows C:\Windows\System32, C:\Users\*\AppData, C:\inetpub\wwwroot

SYSTEM_PROMPT_LEAK — Утечка системного промпта

Свойство Значение
Confidence 0.50–0.95 (зависит от метода)
Метод 1 Эвристические паттерны (8 шт.): «my instructions are...», «I was told to...», «my role is...», «You are... assistant» — confidence 0.40–0.75
Метод 2 N-gram overlap: 4-граммное сравнение ответа с известным system_prompt. При overlap ≥ 25% — confidence 0.50–0.95 пропорционально overlap
Требование В настройках профиля: system_prompt_detection: true и (для метода 2) system_prompt_text: "Ваш системный промпт"

Конфигурация детекции

Параметр Значение по умолч. Описание
default_threshold 0.8 Минимальный confidence для включения сущности в результат
max_text_length 100 000 символов Максимальная длина текста для обработки
processing_timeout 5 секунд Таймаут детекции
enable_natasha_ner true Включить расширенный NER для русского (повышенная точность)
disabled_entity_types ORGANIZATION, DRIVER_LICENSE, TAX_ID Типы, отключённые по умолчанию (высокий FPR)

Порядок детекции (приоритет):

1. Regex-паттерны → захватывают spans (позиции в тексте)
2. NER (EN) → дедупликация с regex (не перекрывает уже найденные spans)
3. NER (RU) → дедупликация с regex + NER (EN)
4. Валидация → повышает confidence для Email, Phone, Credit Card, INN, SNILS