Melhores práticas para armazenar informações de cartões de crédito na Base de dados

No meu país, os pagamentos online não são uma coisa antiga, a primeira vez que vi uma aplicação web a levar pagamentos directamente para uma conta bancária local foi no ano passado.

então, sou um sistema de pagamento web de codificação novato.

A minha pergunta é, quais são as melhores práticas para armazenar informações do cartão de crédito na base de dados...

Tenho muitas ideias: encriptar o cartão de crédito, a restrição de segurança da base de dados, etc.

O que fizeste?

Author: Garis M Suero, 2010-06-09

7 answers

NÃO FAÇAS ISSO.

Há simplesmente demasiado risco envolvido, e normalmente terá de ser inspeccionado externamente para garantir que está a cumprir todas as leis e práticas de segurança locais relevantes. Há muitas empresas de terceiros que o fazem por si que já se deram ao trabalho de garantir que o seu sistema é seguro, que cumprem as leis locais e assim por diante. Um exemplo nos EUA que usei no passado é authorize.net alguns bancos também têm sistemas em que se pode ligar para armazenar dados de cartão de crédito e processar pagamentos. Sei que o país em que está pode não ter leis tão rigorosas como as dos EUA, mas, na minha opinião, isso não é desculpa para mudar a sua. Quando se está a lidar com o dinheiro dos outros, o risco é demasiado para ser garantido.
 80
Author: Dean Harding, 2010-06-08 23:59:10
Para isso, recomendo uma abordagem abrangente e em camadas.

Primeiro, armazenar informações do cartão de crédito deve ser uma opção.

Em segundo lugar, os dados devem ser armazenados de forma segura, usando uma forma forte de encriptação. Eu recomendo AES com tamanho de chave 256bits. Certifique-se de que, ao escolher a sua chave, utiliza todo o espaço de teclas (é um erro de principiante usar apenas uma sequência alfanumérica gerada aleatoriamente como chave).

Em terceiro lugar, a chave AES precisa de ser devidamente segura. Não incorporar o valor dentro do seu código. Se estiver a usar o windows, considere a utilização do DPAPI.

Em quarto lugar, você vai querer configurar as permissões de banco de dados para que as aplicações e os computadores tenham acesso com base na necessidade de saber.

Em quinto lugar, proteja o texto de ligação à sua base de dados.

Sexto, garantir que qualquer aplicação que tenha acesso aos dados do cartão de crédito, irá protegê-lo adequadamente.

 32
Author: Alan, 2010-06-09 08:22:37

No miniumumum seguir A PA DSS (Payment Appliction Data Security Standard). Mais informações podem ser encontradas aqui:

Https://www.pcisecuritystandards.org/security_standards/pa_dss.shtml

Também seria sensato olhar para o PCI DSS, que pode ser encontrado aqui:

Https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

 20
Author: Waleed Al-Balooshi, 2010-06-08 23:57:58

Você deve evitar armazenar qualquer informação do cartão de crédito devido aos riscos para você e para os clientes de fazê-lo.

 2
Author: Dan from FastSpring E-Commerce, 2012-01-01 19:03:28

Encriptar encriptar encriptar encriptar. Não descriptografar se você não tem absolutamente - não descriptografar para mostrar os últimos 4 dígitos. Não descriptografe para dizer ao usuário qual era seu cartão.

Na verdade, se puder, nem sequer mantenha os números de cartão encriptados no mesmo servidor físico que o resto da Informação do utilizador.

 1
Author: dplass, 2010-06-08 23:54:24

Authorize.net tem uma API que lhe permite armazenar informação do cliente no seu sistema. Custa $ 20 / mo. como um complemento à sua conta.

 1
Author: Redtopia, 2013-03-28 19:52:57

Sugiro que encripte números de cartões com um algoritmo forte( similar AES) e uma chave secreta longa.

Então, mantenha a sua chave secreta num lugar seguro semelhante a um disco rígido externo ou óptico. Quando você precisa de chave secreta,use externamente hard.

Se está a usar uma máquina partilhada, tem de guardar a sua chave secreta num dispositivo externo.

Estritamente a sua base de dados

  1. Defina utilizadores restritos para a sua base de Dados
  2. Remova o utilizador raiz da sua base de dados se não estiver necessario.
 -3
Author: Mahmoud, 2016-04-19 15:48:45