Mysql
 sql >> Base de données >  >> RDS >> Mysql

Stocker des numéros de carte de crédit dans SESSION - comment contourner le problème ?

Stockez les détails de la carte sur n'importe quel support de persistance (base de données, quel qu'il soit), mais cryptez le numéro de carte avec un et aléatoire unique clé que vous stockez dans la session. Ainsi, si la session est perdue, la clé l'est également, ce qui vous laisse suffisamment de temps pour nettoyer les données expirées/abandonnées.

Assurez-vous également que vos sessions sont protégées contre le piratage. Il existe des solutions matérielles à cela, mais un moyen simple dans le code consiste à lier l'ID de session à un hachage du premier octet de l'IP plus l'agent utilisateur. Pas infaillible mais ça aide.

Modifier :La clé pour minimiser vos risques est de vous assurer de vous débarrasser de ces informations dès que possible. Juste après la transaction, supprimez l'enregistrement de la base de données. Vous avez également besoin d'un travail continu (disons toutes les 5 minutes) qui supprime tous les enregistrements antérieurs au délai d'expiration de votre session (généralement 20 minutes). Aussi, si vous utilisez une base de données pour ce très données temporaires, assurez-vous qu'elles ne se trouvent pas sur un système de sauvegarde automatisé.

Encore une fois, cette solution n'est pas infaillible et je ne suis même pas sûr à 100% qu'elle soit conforme aux exigences de sécurité CC. Cependant, cela devrait exiger qu'un attaquant ait un contrôle total de l'exécution de votre environnement pour déchiffrer activement les informations CC du client, et si un instantané de votre base de données est compromis (beaucoup plus probable/commun), un seul CC peut être brutalement forcé à la fois, qui est à peu près le meilleur que vous puissiez espérer.