Требование 4 отвечает на вопрос: как защитить платежные данные в момент их передачи между системами. На бумаге все выглядит просто — «используйте HTTPS». На практике именно здесь возникает больше всего инженерных ловушек.
Где на самом деле заканчивается шифрованиеПуть данных карты редко ограничивается браузером и одним сервером. Запрос проходит через балансировщики, API-шлюзы, внутренние сервисы, очереди сообщений, базы данных и внешние интеграции. На каждом из этих этапов важно понимать, зашифрованы ли данные и где именно шифрование прекращается.
Типичная ошибка — TLS настроен только на внешнем периметре. Между балансировщиком и внутренними сервисами данные передаются по «доверенной» сети в открытом виде. С точки зрения PCI DSS это риск: любой, кто получил доступ к внутреннему контуру, может перехватить данные. Современный подход — считать внутреннюю сеть небезопасной по умолчанию и шифровать трафик до точек, где принимаются решения по данным. Это называется принципом нулевого доверия (Zero Trust).
Настройки TLSИспользовать HTTPS недостаточно. Важно,
как именно настроен TLS.Минимально допустимая версия протокола — TLS 1.2, предпочтительно TLS 1.3. Устаревшие версии SSL и TLS 1.0/1.1 должны быть отключены. Наборы шифров требуют отдельного внимания: слабые и устаревшие алгоритмы необходимо исключать, использовать современные наборы с прямой секретностью.
Отдельный источник проблем — сертификаты. Просроченные сертификаты, ручное управление обновлениями и отсутствие мониторинга сроков действия регулярно приводят к инцидентам. Еще более опасная практика — отключение проверки сертификата в коде. Если в продакшене существует флаг
verify=false, соответствие PCI DSS уже под вопросом.
Мобильные приложения и SSL-pinningДля мобильных приложений стандартная проверка сертификата часто недостаточна. В этом случае применяют закрепление сертификата (SSL-pinning): приложение принимает соединение только с конкретным сертификатом или публичным ключом сервера.
Это снижает риск атак с подменой сертификата, но создает операционные сложности. При ротации сертификата сервер может обновиться быстрее, чем пользователи приложение, — и сервис перестанет работать. Поэтому SSL-pinning требует заранее продуманной стратегии: запасных сертификатов, контроля версий и механизма принудительного обновления.
Типовые провалы при защите передачи данныхЧаще всего аудиторы находят не отсутствие шифрования как такового, а ошибки в деталях:
- TLS заканчивается на балансировщике, а дальше данные идут в открытом виде;
- используются устаревшие версии протоколов или слабые шифры;
- проверка сертификата отключена «временно», но остается в продакшене;
- отсутствует контроль сроков действия сертификатов;
- разные сервисы используют разные, несогласованные настройки TLS.
Все эти проблемы возникают не из-за отсутствия требований, а из-за инженерных решений, принятых «по умолчанию». Именно поэтому защита передачи данных — это не настройка одного параметра, а часть архитектуры системы.