Selon un développeur, Stripe enregistre silencieusement vos activités sur les sites Web de ses clients.
La plateforme de paiement assure que les données sont collectées uniquement à des fins de prévention de la fraude
La plateforme de paiement Stripe a le vent en poupe : malgré la pandémie actuelle, elle réussit à lever 600 millions de dollars, tournée de table qui a porté sa valorisation à près de 36 milliards de dollars. Un capital qu’elle prévoit d'utiliser pour continuer à investir dans le développement de produits, la poursuite de son expansion mondiale et les initiatives stratégiques.
La société est devenue un investisseur actif dans un certain nombre de startups, dont certaines sont des partenaires stratégiques de l'entreprise alors qu'elle se déplace dans de nouveaux domaines pour compléter son activité principale de paiement en ligne.
Elle a également ajouté dans son annonce qu'elle avait actuellement 2 milliards de dollars dans son bilan, un chiffre clé qui souligne le message que l'entreprise prend cet investissement non pas pour survivre, mais pour prospérer davantage, et qu'elle pourrait bien choisir de le faire en restant une entreprise privée, car elle ne semble pas avoir besoin d'aller sur les marchés publics pour lever des fonds.
Et d’expliquer « qu’alors que l'impact économique total du COVID-19 demeure une inconnue, plusieurs années de migration offline-to-inline s’effectuent dans l’intervalle de plusieurs semaines. La perturbation actuelle souligne la nécessité d'une infrastructure fiable et facile à utiliser pour les entreprises Internet. Dans ce contexte, la mission de Stripe - accroître le PIB d'Internet - signifie fournir une rampe d'accès à l'économie numérique pour les entreprises du monde entier. Le taux de création de nouvelles entreprises sur Stripe s'est accéléré depuis le début de l'année ».
Faciliter l'intégration des paiements dans un service en ligne a longtemps été l'une des raisons pour lesquelles Stripe a connu une croissance fulgurante : elle est arrivée à un moment où d'autres solutions étaient encore trop fragmentées et compliquées, et son impact sur le commerce électronique au sens large a conduit un certain nombre de ses concurrents et d'autres nouveaux entrants à proposer des produits tout aussi simplifiés.
Mais sa facilité d'utilisation a pris une nouvelle signification ces derniers temps, avec une énorme augmentation des affaires venant en ligne des consommateurs et des entreprises qui ne peuvent plus effectuer de transactions en personne en raison de la pandémie actuelle, conduisant à une nouvelle pléthore de cas d'utilisation pour Stripe et d'autres sociétés de paiement.
« Les gens qui n'ont jamais rêvé d'utiliser Internet pour voir le médecin ou acheter des produits d'épicerie le font maintenant par nécessité. Et les entreprises qui ont différé leur migration vers le monde connecté où elles n'avaient aucune raison d’opérer ont fait le saut pratiquement du jour au lendemain », a déclaré John Collison, président et co-fondateur de Stripe, dans un communiqué. « Nous pensons que ce n'est pas le moment de reculer, mais d'investir encore plus dans la plateforme de Stripe ».
L’évènement qui arrive comme un cheveu sur la soupe ?
Selon un développeur, Stripe enregistre silencieusement vos activités sur les sites Web de ses clients :
« Lorsque j'avais besoin d'une fonctionnalité d'abonnement payant pour ma nouvelle application Web, Stripe semblait être le choix naturel. Après l'intégration, cependant, j'ai découvert que la bibliothèque JavaScript officielle de Stripe enregistre toutes les activités de navigation sur mon site et les signale à Stripe. Ces données comprennent :
- chaque URL que l'utilisateur visite sur mon site, y compris les pages qui n'affichent jamais de formulaires de paiement Stripe
;- De la télémétrie sur la façon dont l'utilisateur déplace le curseur de sa souris lors de la navigation sur mon site
;- des identifiants uniques qui permettent à Stripe de corréler les visiteurs de mon site avec d'autres sites qui acceptent les paiements via Stripe ».
Dans un billet de blog, il s’est efforcé de donner plus de détails sur sa découverte.
Qui est affecté ?
Selon le développeur, Stripe recueille ces données sur votre site Web si l'une des conditions suivantes est vraie:
Votre modèle de page de base comprend la balise de script Stripe : <script src="https://js.stripe.com/v3">
Votre site Web est une application d'une seule page, comme celle créée avec React, Vue ou Angular, et vous utilisez Stripe pour traiter les paiements.
Comment le développeur l’a-t-il découvert ?
« J'ai découvert cela par accident en ajoutant des plans payés à mon rééquilibreur de portefeuille. Dans le cadre du développement, j'utilisais un proxy HTTP qui me permet d'inspecter le trafic HTTP depuis mon navigateur.
« Après avoir mis en œuvre avec succès le flux de paiement de mon application avec Stripe, j'ai remarqué que chaque navigation de page générait une nouvelle demande HTTP POST vers une URL Stripe:
La bibliothèque Stripe.js fait un rapport à Stripe chaque fois qu'une nouvelle page est visitée dans l'application
« C'était étrange, car aucune des pages que j'ai visitées ne contenait d'appels à la bibliothèque de Stripe. En fait, mon application ne collecte pas les informations de paiement des utilisateurs jusqu'à ce qu'ils créent un compte, mais Stripe faisait des demandes HTTP lorsque j'ai atterri sur la page d'accueil de mon application en tant que nouvel utilisateur sans cookies ni informations d'identification stockées ».
Que récolte Stripe ?
Toutes les demandes sortantes générées par Stripe ressemblaient à ceci:
La chaîne affichée en bas, commençant par JTdCJTIydj est un blob JSON encodé en URL et en base64. Les commandes bash suivantes le décodent en une chaîne lisible par l'homme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 POST /4 HTTP/1.1 Host: m.stripe.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: text/plain;charset=UTF-8 Content-Length: 692 Origin: https://m.stripe.network Connection: close Referer: https://m.stripe.network/inner.html Cookie: m=e29f7c00-b748-4e5f-8625-34d14dbc1c01; m=e29f7c00-b748-4e5f-8625-34d14dbc1c01 JTdCJTIydjIlMjIlM0ExJTJDJTIyaWQlMjIlM0ElMjI4MTBiOWIxY2E3ODU5YzNlYzExYTY0NTI0NzNkMTZmYyUyMiUyQyUyMnQlMjIlM0E4JTJDJTIydGFnJTIyJTNBJTIyNC41LjIxJTIyJTJDJTIyc3JjJTIyJTNBJTIyanMlMjIlMkMlMjJhJTIyJTNBbnVsbCUyQyUyMmIlMjIlM0ElN0IlMjJhJTIyJTNBJTIyJTIyJTJDJTIyYiUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGYXNzZXRyZWJhbGFuY2VyLmNvbSUyRnByaWNpbmclMjIlMkMlMjJjJTIyJTNBJTIyUG9ydGZvbGlvJTIwUmViYWxhbmNlciUyMiUyQyUyMmQlMjIlM0ElMjIxYjVhMDcxOS1jMTFjLTQwOTEtYWZiYi00NGE1MjRhMDM2ZGUlMjIlMkMlMjJlJTIyJTNBJTIyMWJhOTYwOWMtMjI0Ni00YjYwLTk1ZWUtYzg0YTRlNDhmOTkzJTIyJTJDJTIyZiUyMiUzQWZhbHNlJTJDJTIyZyUyMiUzQXRydWUlMkMlMjJoJTIyJTNBdHJ1ZSUyQyUyMmklMjIlM0ElNUIlMjJsb2NhdGlvbiUyMiU1RCUyQyUyMmolMjIlM0ElNUIlNUQlMkMlMjJuJTIyJTNBMTkzJTdEJTdE
Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ echo "JTdCJTIydjIlMjIlM0ExJTJDJTIyaWQlMjIlM0ElMjI4MTBiOWIxY2E3ODU5YzNlYzExYTY0NTI0NzNkMTZmYyUyMiUyQyUyMnQlMjIlM0E4JTJDJTIydGFnJTIyJTNBJTIyNC41LjIxJTIyJTJDJTIyc3JjJTIyJTNBJTIyanMlMjIlMkMlMjJhJTIyJTNBbnVsbCUyQyUyMmIlMjIlM0ElN0IlMjJhJTIyJTNBJTIyJTIyJTJDJTIyYiUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGYXNzZXRyZWJhbGFuY2VyLmNvbSUyRnByaWNpbmclMjIlMkMlMjJjJTIyJTNBJTIyUG9ydGZvbGlvJTIwUmViYWxhbmNlciUyMiUyQyUyMmQlMjIlM0ElMjIxYjVhMDcxOS1jMTFjLTQwOTEtYWZiYi00NGE1MjRhMDM2ZGUlMjIlMkMlMjJlJTIyJTNBJTIyMWJhOTYwOWMtMjI0Ni00YjYwLTk1ZWUtYzg0YTRlNDhmOTkzJTIyJTJDJTIyZiUyMiUzQWZhbHNlJTJDJTIyZyUyMiUzQXRydWUlMkMlMjJoJTIyJTNBdHJ1ZSUyQyUyMmklMjIlM0ElNUIlMjJsb2NhdGlvbiUyMiU1RCUyQyUyMmolMjIlM0ElNUIlNUQlMkMlMjJuJTIyJTNBMTkzJTdEJTdE" \ | base64 --decode \ | python -c "import sys; import json; from urllib.parse import unquote; print(json.dumps(json.loads(unquote(sys.stdin.read())), indent=2, sort_keys=True))"
La bibliothèque Stripe génère une nouvelle demande comme celle-ci chaque fois qu'un utilisateur affiche une nouvelle page dans l'application du développeur. Chaque demande est assez similaire, sauf que le champ URL reflète l'URL dans la barre d'adresse au moment de la demande. Il est apparu que Stripe enregistrait chaque page vue de son application. De plus, selon le développeur, Stripe enregistre l'URL complète, y compris les paramètres de requête et les fragments d'URL (par exemple /account?id=12345#name=michael) que certains sites Web utilisent pour stocker des informations sensibles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 { "a": null, "b": { "a": "", "b": "https://assetrebalancer.com/pricing", "c": "Portfolio Rebalancer", "d": "1b5a0719-c11c-4091-afbb-44a524a036de", "e": "1ba9609c-2246-4b60-95ee-c84a4e48f993", "f": false, "g": true, "h": true, "i": [ "location" ], "j": [], "n": 193 }, "id": "810b9b1ca7859c3ec11a6452473d16fc", "src": "js", "t": 8, "tag": "4.5.21", "v2": 1 }
« Vous avez peut-être remarqué dans la vidéo que lorsque j'ai chargé l'application pour la première fois, la première page a généré deux demandes, tandis que chaque autre chargement de page n'en créait qu'une. Voici ce que j'ai trouvé lorsque j'ai décodé cette deuxième demande:
En se fiant au nom mouse-timings, il semble que Stripe enregistre les mouvements de la souris des utilisateurs de l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 { "data": [ 4669, 20, 26, 13, 21, 20, 40, 21, 25, 14 ], "muid": "1b5a0719-c11c-4091-afbb-44a524a036de", "sid": "1ba9609c-2246-4b60-95ee-c84a4e48f993", "source": "mouse-timings-10", "url": "https://assetrebalancer.com/" }
Enfin, chaque demande contient le même cookie, identifiant de manière unique l'utilisateur:
Est-ce une erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cookie: m=e29f7c00-b748-4e5f-8625-34d14dbc1c01
En fait, le développeur n'est ni le seul ni le premier à avoir découvert ce mécanisme. Des rapports de plusieurs autres développeurs, dont certains datent de 2017, en avaient déjà fait état.
Dans l'un des fils de discussion sur Github, un employé de Stripe a suggéré que ce comportement n'était pas intentionnel et que Stripe chercherait un correctif. C'était il y a 7 mois, et il n'y a eu aucun suivi de Stripe sur ce fil ou ailleurs que le développeur ait pu trouver.
Le développeur a signalé ce problème au support Stripe pour voir s'il s'agissait d'un comportement prévu et comment l'éviter.
Stripe a répondu rapidement pour lui dire que le suivi des utilisateurs était de par leur conception et qu'il devait accueillir cette fonctionnalité avec enthousiasme :
« Salut Michael,
« Merci de m'avoir contacté. Je suis Faith du support Stripe.
« Allant dans le vif du sujet, les appels vus le sont par design afin de détecter la fraude et sont dans le meilleur intérêt de l'utilisateur. Selon les documents : «Pour tirer le meilleur parti de la fonctionnalité de fraude avancée de Stripe, incluez ce script sur chaque page, et pas seulement sur la page de paiement. Cela permet à Stripe de détecter un comportement anormal pouvant être révélateur d'une fraude lorsque les clients naviguent sur votre site Web. »
« https://stripe.com/docs/js/including
« Veuillez nous informer si vous rencontrez d'autres problèmes ou si vous avez d'autres préoccupations ».
Et le développeur d’estimer que « La ligne évoquant le ‘meilleur intérêt de l'utilisateur’ était particulièrement condescendante. La partie bénéficiant le plus de cette collecte de données est clairement Stripe et non l'utilisateur. Stripe obtient des données gratuites pour former ses modèles de détection de fraude et potentiellement vendre ces informations aux annonceurs.
« Pour l'utilisateur, Stripe.js dégrade son expérience en le forçant à télécharger une bibliothèque JavaScript supplémentaire et en envoyant des requêtes HTTP supplémentaires depuis son navigateur. Cela se produit même si l'utilisateur ne visite jamais une page qui accepte les paiements par carte de crédit ».
Est-ce que Stripe en parle ?
Le développeur affirme avoir cherché un communiqué officiel de Stripe sur ce comportement, mais n'avoir rien trouvé. La déclaration la plus proche qu'il a pu repérer est ce vague paragraphe sur la description de leur package npm, que le représentant du support Stripe lui a cité :
« Pour tirer le meilleur parti de la fonctionnalité de fraude avancée de Stripe, assurez-vous que Stripe.js est chargé sur chaque page, pas seulement sur votre page de paiement. Cela permet à Stripe de détecter un comportement anormal pouvant être révélateur d'une fraude lorsque les clients naviguent sur votre site Web ».
La politique de confidentialité est un peu plus précise sur les données qu'ils collectent, mais cela implique qu'ils collectent ces données sur stripe.com plutôt que sur les sites des clients :
« Nos sites utilisent des cookies et d'autres technologies pour fonctionner efficacement. Ces technologies enregistrent des informations sur votre utilisation de nos sites, notamment:
- Les données du navigateur et de l'appareil, telles que l'adresse IP, le type d'appareil, le système d'exploitation et le type de navigateur Internet, la résolution d'écran, le nom et la version du système d'exploitation, le fabricant et le modèle de l'appareil, la langue, les plug-ins, les modules complémentaires et la version linguistique des sites que vous visitez;
- Les données d'utilisation, telles que le temps passé sur les sites, les pages visitées, les liens sur lesquels vous avez cliqué, les préférences linguistiques et les pages qui vous ont dirigé ou dirigé vers nos sites.
« Nous pouvons également collecter des informations sur vos activités en ligne sur des sites Web et des appareils connectés au fil du temps et sur des sites Web, appareils, applications et autres fonctionnalités et services en ligne tiers ».
Le développeur note que la politique de confidentialité comprend également des termes vagues qui permettent à Stripe de vendre ces données aux annonceurs:
« Lorsque vous visitez nos sites ou services en ligne, nous et certains tiers collectons des informations sur vos activités en ligne au fil du temps et sur différents sites pour vous proposer des publicités sur des produits et services adaptés à vos intérêts individuels (ce type de publicité est appelé "intérêt la publicité basée sur le principe") ».
La réaction de Stripe
Patrick Collison, cofondateur de Stripe, a rapidement réagi sur les réseaux sociaux :
« La question posée ("Stripe collecte-t-elle ces données à des fins publicitaires ?") Peut être facilement résolue par la négative. Ces données n'ont jamais été, ne sont pas et ne seront jamais vendues / louées / etc. aux annonceurs.
« Stripe.js collecte ces données uniquement à des fins de prévention de la fraude - cela nous aide à détecter les bots qui tentent de frauder les entreprises qui utilisent Stripe. (Les CAPTCHA utilisent des techniques similaires, mais entraînent plus de friction avec l'interface utilisateur.) Stripe.js fait partie de la pile ML qui nous aide à stopper littéralement des millions de paiements frauduleux par jour et des techniques comme celle-ci nous aident à bloquer la fraude plus efficacement que presque n'importe quoi d'autre sur le marché. Les entreprises qui utilisent Stripe perdraient beaucoup plus d'argent si cette fonctionnalité n'existait pas. Nous le voyons directement: certaines entreprises n'utilisent pas Stripe.js et elles sont souvent soudainement et désagréablement surprises lorsqu'elles sont attaquées par des réseaux de fraude sophistiqués.
« Si vous ne voulez pas utiliser Stripe.js, vous n'êtes certainement pas obligé (ou vous pouvez l'inclure uniquement sur une page de paiement minimale) - cela dépend simplement de la charge PCI et du risque de fraude que vous souhaitez prendre.
« Nous clarifierons immédiatement le langage dans les conditions d'utilisation qui rend cela ambigu. Nous afficherons également une page plus claire sur la prévention de la fraude de Stripe.js ».
Un peu plus tard, un individu a fait cette remarque à laquelle Collison a réagi : « en tant que personne qui l'a essayée, la détection de fraude de Stripe fonctionne vraiment. Les transactions frauduleuses sont passées de ~ 2 % à moins de 0,5 % sur des centaines de milliers de transactions par mois. Et cela a très probablement sauvé notre entreprise à une phase très critique ». Et Collison de répondre : « c'est ce que nous visons avec Stripe Radar et Stripe.js et c'est la raison pour laquelle nous travaillons sur ces technologies ».
Source : billet de Michael Lynch
Et vous ?
Quel est votre avis sur cette situation ?
Partager