Les données de carte que vous ne devez pas stocker.
L'exigence 3 concerne la protection des données de compte stockées, et elle trace une ligne stricte. Le numéro de compte principal, là où vous le stockez, doit être rendu illisible. Et les données d'authentification sensibles, comme le code de vérification de carte (les trois ou quatre chiffres), les données complètes de la piste magnétique ou de la puce, et le code PIN, ne doivent pas être stockées après qu'un paiement soit autorisé. Pour la plupart des flux d'acceptation de paiement que les applications construisent, considérez cela comme : vous ne les conservez pas, même chiffrées. (Les émetteurs de cartes ont des exceptions étroites et contrôlées ; la plupart des équipes ne sont pas des émetteurs.) La distinction se décide dans le code, dans ce que vos gestionnaires persistent.
The shapes the same control failure takes.
L'exigence 3 est violée lorsqu'une modification stocke des données de compte qu'elle ne devrait pas, ou les stocke en clair. Les formes récurrentes :
Des données d'authentification sensibles sont stockées
Le code de vérification de carte, les données complètes de la piste magnétique ou le code PIN sont écrits dans une base de données, un cache ou une file d'attente après autorisation, ce qu'un flux d'acceptation de paiement ne doit pas faire, même chiffré.
Un PAN est stocké sans être illisible
Un numéro de compte principal est persistant sans chiffrement, tronquage ou tokenisation, de sorte qu'il reste lisible au repos.
Les données de compte atterrissent dans un nouveau stockage
Les données de carte commencent à être écrites dans un endroit non conçu pour les protéger (un journal, un événement d'analyse, une table de débogage), ce qui inclut ce stockage dans le périmètre.
Une étape de masquage ou de tokenisation est supprimée
Une étape qui tronquait ou tokenisait le PAN avant stockage est retirée, de sorte que le numéro complet est maintenant conservé.
Les données de carte sont conservées plus longtemps que nécessaire
Une politique de rétention ou de purge qui limitait la durée de conservation des données de compte est supprimée, de sorte qu'elles s'accumulent au-delà du besoin métier.
Enregistrement du code de vérification de carte pour les nouvelles tentatives.
Un paiement nécessite parfois une nouvelle tentative, et il serait pratique de renvoyer les détails originaux. Une modification enregistre donc l'intégralité de la charge utile de paiement, y compris le code de vérification de carte, dans la table des commandes. Cela facilite les nouvelles tentatives, mais stocke des données qui ne doivent jamais être conservées après autorisation.
- await orders.insert({ id, amount, last4: card.last4 })+ await orders.insert({ id, amount, card }) // full card incl. cvcreturn orderLa persistance de l'objet carte complet stocke le code de vérification de carte après autorisation, ce que l'exigence 3 interdit pour un flux d'acceptation de paiement, même si la colonne est chiffrée. Ne stockez que ce que vous êtes autorisé à conserver (ici, les quatre derniers chiffres et un jeton de votre processeur), et non le code de vérification, les données complètes de la piste ou le code PIN.
Les données de compte stockées sont recherchées, pas seulement interrogées.
Une évaluation PCI examine quelles données de compte sont réellement stockées et où : elle vérifie que les données d'authentification sensibles ne sont pas conservées après autorisation et que tout PAN stocké est illisible. Une modification qui commence à persister le code de vérification ou un PAN non masqué est exactement le constat qui apparaît, et elle inclut tout stockage concerné dans le périmètre. Le diff du gestionnaire est l'endroit le moins coûteux pour l'intercepter.
Une revue, pas un QSA.
heygrc signale les modifications qui concernent l'exigence 3 et cite l'exigence afin que la correction ait lieu dans la pull request. Il ne réalise pas votre évaluation ni ne remplit votre questionnaire d'auto-évaluation. Il détecte le moment où une modification stocke des données de compte qu'elle ne devrait pas, au niveau du diff.