Stripe is a payment processing service which works more or less like this:
- A user visits our web application and fills in their card details in a form
- Some JavaScript provided by Stripe and loaded within a
<script>
tag on the page makes an asynchronous request to Stripe's servers, which exchange the card details for a token - The token is posted to our application backend, which sends it back to Stripe. This causes a charge to be made at the user's bank
Our server is only allowed to communicate with Stripe's API over TLS 1.2.
However, the Stripe front end JavaScript supports IE9 and IE10, which do not handle TLS 1.2 out of the box. Therefore, some users on these browsers will request the Stripe JavaScript using the weaker TLS 1.0.
What's to stop someone spoofing the Stripe JavaScript for these users and man-in-the-middling their card details?