Почему 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 (или любой другой процессор онлайн-платежей).