Dans mon pays, les paiements en ligne ne sont pas une vieille chose, la première fois que j'ai vu une application Web effectuer des paiements directement sur un compte bancaire local, c'était l'année dernière.
Donc, je suis un nouveau système de paiement Web de codage.
Ma question est, quelles sont les meilleures pratiques pour stocker les informations de carte de crédit dans la base de données ...
J'ai beaucoup d'idées: cryptage de la carte de crédit, restriction de sécurité de la base de données, etc.
Qu'avez-vous fait?
NE LE FAITES PAS
Il y a tout simplement beaucoup trop de risques et vous devrez généralement faire l'objet d'un audit externe pour vous assurer que vous vous conformez à toutes les lois et pratiques de sécurité locales pertinentes.
De nombreuses sociétés tierces qui le font pour vous ont déjà eu du mal à s'assurer que leur système est sécurisé, qu'elles respectent les lois locales, etc. Aux États-Unis, un exemple que j'ai utilisé par le passé est authorize.net . Certaines banques ont également des systèmes auxquels vous pouvez vous connecter pour stocker les données de carte de crédit et traiter les paiements.
Je sais que le pays dans lequel vous vous trouvez n'a peut-être pas des lois aussi strictes que les États-Unis, mais à mon avis, ce n'est pas une excuse pour rouler le vôtre. Lorsque vous traitez avec l'argent d'autrui, le risque est tout simplement trop élevé pour être justifié.
Pour cela, je recommande une approche globale et en couches.
Tout d'abord, le stockage des informations de carte de crédit devrait être une option.
Deuxièmement, les données doivent être stockées en toute sécurité, en utilisant une forme de cryptage solide. Je recommande AES avec une clé de 256 bits. Assurez-vous que lorsque vous choisissez votre clé, vous utilisez tout l'espace de clé (c'est une erreur de débutant d'utiliser simplement une chaîne de caractères alphanumériques générée aléatoirement comme clé).
Troisièmement, la clé AES doit être correctement sécurisée. N'intégrez pas la valeur dans votre code. Si vous utilisez Windows, pensez à utiliser DPAPI.
Quatrièmement, vous souhaiterez configurer les autorisations de base de données afin que les applications et les ordinateurs aient accès en cas de besoin.
Cinquièmement, sécurisez la chaîne de connexion à votre base de données.
Sixièmement, assurez-vous que toute application qui aura accès aux données de la carte de crédit les sécurisera correctement.
Au minimum, suivez le PA DSS (Payment Appliction Data Security Standard). Plus d'informations peuvent être trouvées ici:
https://www.pcisecuritystandards.org/security_standards/pa_dss.shtml
Il serait également judicieux de regarder PCI DSS, qui peut être trouvé ici:
https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
Vous devez éviter de stocker des informations de carte de crédit en raison des risques pour vous et pour les clients de le faire.
Crypter crypter crypter. Ne décryptez pas si vous n'êtes pas obligé de le faire - ne décryptez pas pour afficher les 4 derniers chiffres. Ne déchiffrez pas pour dire à l'utilisateur quelle était sa carte.
En fait, si vous le pouvez, ne conservez même pas les numéros de carte cryptés sur le même serveur physique que le reste des informations utilisateur.
Authorize.net possède une Customer Information Manager API qui vous permet de stocker les informations client dans leur système. Il en coûte 20 $/mois. comme module complémentaire à votre compte.