PCI DSS: что нужно знать бизнесу, принимающему оплату картами
Практика4 минРедакция Innovialabs
Коротко
PCI DSS — стандарт безопасности карточных платёжных систем для всех, кто работает с данными карт; проще всего соответствовать ему, если номера карт вообще не попадают на ваши серверы благодаря платёжной странице провайдера или токенизации.
Коротко
PCI DSS (Payment Card Industry Data Security Standard) — набор требований безопасности от международных платёжных систем: Visa, Mastercard и других. Он касается любого бизнеса, который хранит, обрабатывает или передаёт данные карт, независимо от размера.
Объём работы зависит от одного: насколько близко данные карт подходят к вашим системам. Если покупатель вводит карту на странице платёжного провайдера, а вы получаете только токен или статус оплаты, обязательства сводятся к короткой анкете. Если номера карт проходят через ваши серверы, на вас ложатся сотни требований, аудиты и сканирования.
Уровни соответствия
Платёжные системы делят мерчантов на уровни по числу транзакций в год. Пороги у каждой системы свои, а ваш уровень определяет банк-эквайер или платёжный провайдер. Пример — классификация Visa:
| Уровень | Транзакций в год | Как подтверждается |
|---|---|---|
| 1 | Более 6 млн | Аудит на месте от QSA, Report on Compliance |
| 2 | От 1 до 6 млн | Анкета самооценки (SAQ) |
| 3 | От 20 тыс. до 1 млн в e-commerce | SAQ |
| 4 | Менее 20 тыс. в e-commerce | SAQ |
Малый и средний бизнес почти всегда попадает на уровень 3 или 4. Для него соответствие — это ежегодная SAQ нужного типа, подписанный Attestation of Compliance (AOC) и, для некоторых типов SAQ, ежеквартальное внешнее сканирование уязвимостей от сертифицированного вендора (ASV).
Типы SAQ: какой ваш
Тип SAQ определяется способом приёма платежей, а не размером бизнеса.
- SAQ A — интернет-магазин, у которого платёжная страница целиком размещена у PCI-сертифицированного провайдера (редирект или iframe). Самая короткая анкета.
- SAQ A-EP — ваш сайт не получает данные карт, но управляет платёжной страницей: например, ваш JavaScript рисует форму и отправляет данные напрямую провайдеру. Требований заметно больше.
- SAQ B / B-IP — офлайн-точки с автономными терминалами.
- SAQ C-VT — сотрудники вручную вводят карты в виртуальный терминал провайдера.
- SAQ P2PE — терминалы из сертифицированного решения point-to-point encryption.
- SAQ D — всё остальное, включая любую схему, где данные карт доходят до ваших серверов. По сути, полный стандарт.
Разница между SAQ A и SAQ D — несколько десятков вопросов против сотен мер контроля сети, серверов, логов, доступов и процесса разработки.
Почему платёжная страница и токенизация сокращают scope
Scope — все системы, которые хранят, обрабатывают или передают данные карт, плюс всё, что с ними связано. Чем меньше систем в scope, тем меньше нужно защищать и доказывать.
- Платёжная страница провайдера. Stripe Checkout, страницы оплаты Payme или Click: покупатель вводит карту у провайдера или в его iframe, а вы получаете статус платежа. Ваши серверы номер карты не видят.
- Токенизация. Фронтенд-компонент провайдера (Stripe Elements, форма привязки карты) отправляет карту напрямую провайдеру и возвращает токен. Бэкенд хранит и списывает только токен, а вне вашего аккаунта у этого провайдера он бесполезен.
- Рекуррентные платежи устроены так же: вы храните токен, а не карту.
Формально PCI DSS — стандарт международных платёжных систем. Для национальных карт вроде Uzcard и Humo правила задают процессинговые центры и договор с провайдером, но принцип тот же: не пускать данные карт в свои системы.
Ошибки, которые затягивают данные карт на ваши серверы
- Собственная форма оплаты, отправляющая карту на ваш бэкенд, который пересылает её в API провайдера. Даже если вы ничего не храните, данные прошли через вас — это SAQ D.
- Логирование тел запросов. Отладочные логи, API-шлюзы и трекеры ошибок незаметно записывают номера карт. Маскируйте поля или отключите логирование тел на платёжных маршрутах.
- Хранение CVV/CVC. Код безопасности нельзя хранить после авторизации ни в каком виде, даже зашифрованным.
- Сторонние скрипты на странице оплаты. Аналитика, чат-виджеты и инструменты записи сессий могут читать поля форм. Держите страницу оплаты минимальной и контролируйте каждый скрипт на ней.
- Карты через каналы поддержки. Клиенты присылают фото карт в Telegram, менеджеры записывают номера под диктовку по телефону, и данные оседают в переписке и CRM.
- Полные номера карт «для удобства» — для возвратов или повторных заказов вместо токенов и API возвратов провайдера.
- Забытая страница перед оплатой. Даже с SAQ A: если ваш сайт взломан, злоумышленник может подменить редирект или iframe на фальшивую форму.
Чек-лист
- Уточните у эквайера или провайдера свой уровень и тип SAQ.
- Используйте платёжную страницу, iframe или токенизацию, чтобы попасть в SAQ A.
- Найдите номера карт в логах, базах, бэкапах и CRM и удалите их.
- Защитите сам сайт: HTTPS, обновления, 2FA для администраторов, минимум скриптов на оплате.
- Запросите у провайдера его собственный AOC.
- Повторяйте SAQ ежегодно и при каждом изменении платёжного процесса.
Стандарт и формы SAQ — в официальной библиотеке документов PCI SSC.