Guide sur la sécurité en matière d'intégration
Garantissez la conformité PCI et sécurisez les communications client-serveur.
Toute personne participant au traitement, à la transmission ou au stockage des données de carte doit se conformer aux normes de sécurité des données du secteur des cartes de paiement (PCI DSS). Stripe a fait l’objet d’un audit réalisé par un auditeur de la sécurité indépendant (QSA) qualifié PCI, à l’issue duquel elle a obtenu la certification de fournisseur de services PCI de niveau 1, soit le plus haut niveau de certification du secteur des paiements.
La conformité PCI est une responsabilité partagée, qui s’applique tant à Stripe qu’à votre entreprise. Lorsque vous acceptez des paiements, vous devez le faire en conformité avec la norme PCI. Le moyen le plus simple d’y parvenir est de ne jamais voir (ou avoir accès) aux données des cartes. Stripe vous simplifie la tâche, car nous pouvons nous charger de protéger les informations de carte bancaire de vos clients. Vous pouvez ainsi simplifier votre conformité PCI tant que vous :
- Utilisez l’une de nos intégrations de paiement recommandées pour recueillir les informations de paiement, qui sont directement transmises à Stripe de façon sécurisée sans passer par vos serveurs.
- Accédez à vos pages de paiement de façon sécurisée à l’aide du protocole Transport Layer Security (TLS), de façon à ce qu’elles utilisent le HTTPS
- Vérifiez et validez la conformité PCI de votre compte chaque année.
Valider votre conformité PCI
Tous les utilisateurs Stripe doivent valider leur conformité PCI tous les ans. La plupart des utilisateurs peuvent le faire au moyen du formulaire d’autoévaluation (SAQ) fourni par le PCI Security Standards Council. Le type de questionnaire dépend de votre intégration Stripe et des méthodes que vous utilisez pour collecter les données de carte. Certaines méthodes peuvent nécessiter le chargement de documents PCI supplémentaires. Si nécessaire, vous pouvez les charger dans le Dashboard. Si vous utilisez plusieurs des méthodes ci-dessous, vous n’avez pas besoin de charger plusieurs SAQ.
Si vous ne savez pas comment prouver que votre entreprise est conforme à la norme PCI (par exemple, si votre intégration a été intégrée à un tiers), nous vous recommandons de contacter un auditeur de sécurité agréé PCI (QSA) pour déterminer la meilleure façon de valider votre conformité conformément aux directives actuelles du PCI Council.
Exigences de conformité PCI par intégration
Intégration | Exigence | Recommandation |
---|---|---|
API directe | SAQ D | Lorsque vous transmettez directement les informations de carte bancaire à l’API Stripe, votre intégration gère directement ces données. Vous devez alors prouver chaque année votre conformité à la norme PCI à l’aide du formulaire SAQ D, soit le plus exigeant des formulaires SAQ. Pour vous simplifier la tâche :
En outre, notre outil de prévention de la fraude, Radar, qui comprend une évaluation des risques et des règles, est uniquement disponible lorsque l’une de nos méthodes de tokénisation côté client est utilisée. |
Checkout ou Elements | SAQ A | Checkout, Stripe.js et Elements hébergent toutes les saisies de collecte de données de carte dans un iframe traité à partir du domaine Stripe (pas le vôtre), de façon à ce que les informations de carte de vos clients n’atteignent jamais vos serveurs. Vos exigences en matière de conformité PCI sont ainsi simplifiées. |
Connect | SAQ A | Si vous collectez exclusivement les données de carte bancaire via une plateforme Connect (par exemple, Squarespace), nous pouvons déterminer si la plateforme fournit la documentation PCI nécessaire. |
Dashboard | SAQ C-VT | La création manuelle de paiements par carte dans le Dashboard doit être réservée aux situations exceptionnelles. Cette méthode ne doit pas servir à traiter des paiements de façon habituelle. Vos clients doivent saisir les informations de leur carte dans une application mobile ou un formulaire de paiement adapté(e). Lorsqu’elles sont traitées en dehors de Stripe, nous ne pouvons pas vérifier que les informations de carte saisies manuellement sont sécurisées. Vous devez donc protéger les données de carte conformément aux exigences de conformité PCI et remplir le formulaire SAQ C-VT chaque année pour prouver que votre entreprise est conforme à la norme PCI. |
SDK Mobile | SAQ A | Le contrôle du développement et des modifications du SDK mobile de Stripe est effectué conformément à la norme PCI DSS (exigences 6.3 à 6.5) ; il est déployé par le biais de nos systèmes validés PCI. Lorsque vous utilisez uniquement les composants d’interface utilisateur fournis dans nos SDK officiels pour iOS ou Android, ou que vous créez un formulaire de paiement avec Elements dans une vue Web, les numéros de carte de vos clients sont directement transmis à Stripe. Vos exigences en matière de conformité PCI sont ainsi simplifiées. Si vous faites autrement, par exemple si vous rédigez votre propre code pour gérer les informations de paiement, votre entreprise sera probablement soumise à des exigences PCI DSS supplémentaires (6.3 - 6.5) et vous ne pourrez pas remplir le formulaire SAQ A. Contactez un auditeur de sécurité agréé PCI (QSA) pour déterminer la meilleure façon de valider votre conformité conformément aux directives actuelles du PCI Council. Si votre application nécessite que vos clients saisissent leurs informations sur leur propre appareil, vous pouvez remplir le questionnaire SAQ A. Si votre application accepte les informations de carte de plusieurs clients sur votre appareil (p. ex., application de point de vente), consultez un auditeur de sécurité agréé PCI (QSA) pour connaître la meilleure façon de valider votre conformité PCI. |
Stripe.js v2 | SAQ A-EP | Si vous utilisez Stripe.js v2 pour transmettre les données de carte saisies dans un formulaire hébergé sur votre propre site, vous devez remplir le formulaire SAQ A-EP chaque année afin de prouver la conformité de votre entreprise aux normes PCI. Par ailleurs, Checkout et Elements vous offrent la flexibilité et la personnalisation d’un formulaire autohébergé, tout en répondant aux critères d’admissibilité PCI du formulaire SAQ A. |
Terminal | SAQ C | Si vous collectez exclusivement les données de cartes bancaires via Stripe Terminal, vous pouvez les valider à l’aide du formulaire SAQ C. Si vous intégrez Stripe par le biais d’autres méthodes répertoriées dans ce tableau, vous devez démontrer votre conformité pour chacune de ces méthodes, comme décrit. |
Avertissement
Si vous traitez plus de 6 millions de transactions par an avec Visa ou MasterCard, ou plus de 2,5 millions de transactions avec American Express, ou si l’un des réseaux de cartes vous considère comme un fournisseur de niveau 1, vous ne pouvez pas utiliser le questionnaire SAQ pour prouver votre conformité PCI. Dans ce cas, les marques de carte de paiement exigent que vous remplissiez tous les ans un rapport de conformité (RoC) pour valider votre conformité PCI.
Utiliser TLS et HTTPS
TLS désigne le processus de transmission sécurisée des données entre le client (l’application ou le navigateur que votre client utilise) et votre serveur. À l’origine, le protocole Secure Sockets Layer (SSL) effectuait cette opération. Cependant, ce protocole obsolète n’étant plus sécurisé, il a été remplacé par TLS. Le terme SSL est encore parfois utilisé pour désigner le protocole TLS et sa fonction de transmission sécurisée des données.
Les pages de paiement doivent utiliser une version récente (TLS 1.2 ou une version ultérieure), car cela réduit considérablement le risque que vous ou vos clients soyez victimes d’attaques d’intercepteurs. Le protocole TLS vise à :
- Chiffrer et vérifier l’intégrité du trafic entre le client et votre serveur.
- Vérifier que le client communique avec le bon serveur. En pratique, cela signifie généralement que le propriétaire du domaine et le propriétaire du serveur sont la même entité. Cela contribue à éviter les attaques d’intercepteurs. Sans cela, vous n’avez aucune garantie que vous chiffrez le trafic vers la bonne destination.
De plus, vos clients se sentent plus à l’aise de partager des informations sensibles sur des pages accessibles via HTTPS, ce qui peut vous aider à augmenter votre taux de conversion.
Si nécessaire, vous pouvez tester votre intégration sans utiliser le protocole HTTPS, et l’activer au moment de commencer à accepter des paiements réels. Cependant, toutes les interactions entre votre serveur et Stripe doivent utiliser HTTPS (lorsque vous utilisez nos bibliothèques).
Configurer le protocole TLS
Pour utiliser TLS, un certificat numérique (fichier émis par une autorité de certification) est obligatoire. Une fois installé, ce certificat garantit au client qu’il communique avec le bon serveur, et non avec un imposteur. Vous devrez obtenir un certificat numérique d’un fournisseur de certificats fiable, comme :
Le coût des certificats varie en fonction du type de certificat et du fournisseur. « Let’s Encrypt » est une autorité de certification qui fournit des certificats gratuitement.
Pour configurer le protocole TLS :
- Achetez un certificat auprès d’un fournisseur approprié.
- Configurez votre serveur pour utiliser le certificat. Cette étape peut être complexe, c’est pourquoi nous vous invitons à suivre le guide d’installation du fournisseur que vous utilisez.
Puisque le protocole TLS est constitué d’une suite complexe d’outils cryptographiques, certains détails peuvent nous échapper. Nous vous recommandons d’utiliser le test de serveur SSL de Qualys SSL Labs pour vérifier que tout est configuré de façon sécurisée.
Considérations de sécurité
Il peut être risqué d’ajouter JavaScript depuis d’autres sites, puisque votre sécurité dépend alors de la leur. Si ces sites sont compromis, toute personne mal intentionnée peut parvenir à exécuter du code arbitrairement sur vos pages. En pratique, de nombreux sites utilisent JavaScript pour utiliser des services comme Google Analytics, même sur des pages sécurisées. Néanmoins, nous vous conseillons d’éviter de le faire.
Si vous utilisez des webhooks, utilisez le protocole TLS pour l’endpoint afin d’éviter que le trafic soit intercepté et que les notifications soient modifiées (un événement de webhook ne doit jamais contenir d’informations sensibles).
Bien qu’il soit important de respecter les normes de sécurité des données, votre approche de la sécurité ne doit pas s’arrêter là. Voici quelques ressources intéressantes pour en savoir plus sur la sécurité Web :
Données de carte hors champ que vous pouvez stocker en toute sécurité
Stripe renvoie des informations de carte non sensibles en réponse à une demande de paiement. Il s’agit du type de carte, de ses quatre derniers chiffres et de sa date d’expiration. Ces données n’étant pas concernées par la conformité PCI, vous pouvez les stocker dans votre base de données. De plus, vous pouvez stocker toute donnée renvoyée par notre API.
Politique de sécurité du contenu
Si vous avez déployé une politique de sécurité du contenu, les directives imposées par Checkout, les composants intégrés Connect et Stripe.js sont les suivantes :