Почему Stripe разрешает клиентам, которые поддерживают TLS 1.0, только если они применяют TLS 1.2 на сервере?

Stripe - это сервис обработки платежей, который работает примерно так:

  • Пользователь посещает наше веб-приложение и заполняет данные своей карты в форме
  • Некоторый JavaScript предоставлен Stripe и загружен в <script> тег на странице делает асинхронный запрос к серверам Stripe, которые обмениваются данными карты для токена
  • Токен публикуется в серверной части нашего приложения, которая отправляет его обратно в Stripe. Это заставляет взимать плату в банке пользователя

Наш сервер может общаться только с API Stripe через TLS 1.2.

Однако JavaScript-интерфейс Stripe поддерживает IE9 и IE10, которые не поддерживают TLS 1.2 из коробки. Поэтому некоторые пользователи в этих браузерах будут запрашивать Stripe JavaScript, используя более слабый TLS 1.0.

Что может помешать кому-то подделать Stripe JavaScript для этих пользователей и контролировать данные их карт?

1 ответ

Решение

Хороший вопрос!

Совет по стандартам безопасности PCI установил предельную дату TLS 1.0 30 июня 2018 года [1].

Чтобы упростить переход, Stripe начала применять TLS 1.2 для учетных записей, созданных после 1 июля 2016 года [2], и постепенно прекращает поддержку TLS 1.0 и 1.1 для более старых учетных записей.

Тем не менее, для клиентских библиотек ( Checkout и Stripe.js) Stripe по-прежнему поддерживает TLS 1.0 / 1.1, как вы заметили. Это связано с тем, что Stripe не хочет излишне запрещать клиентам платить, даже если они используют старые браузеры / ОС, которые не поддерживают TLS 1.2.

Конечно, к 30 июня 2018 года клиенты, использующие браузер TLS 1.0, больше не смогут осуществлять платежи через Stripe (или любой другой процессор онлайн-платежей).

Другие вопросы по тегам