Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Armazenando números de cartão de crédito em SESSION - maneiras de contornar isso?


Armazene os detalhes do cartão em qualquer meio de persistência (banco de dados, qualquer que seja), mas criptografe o número do cartão com um único e aleatório chave que você armazena na sessão. Dessa forma, se a sessão for perdida, a chave também será - o que lhe dá tempo suficiente para limpar os dados expirados/abandonados.

Verifique também se suas sessões estão protegidas contra seqüestro. Existem soluções de hardware para isso, mas uma maneira simples no código é vincular o ID da sessão a um hash do primeiro octeto do IP mais o agente do usuário. Não é infalível, mas ajuda.

Editar :A chave para minimizar o risco é garantir que você se livre dessa informação o mais rápido possível. Logo após a transação ser concluída, exclua o registro do banco de dados. Você também precisa de um trabalho contínuo (digamos, a cada 5 minutos) que exclua todos os registros mais antigos que o tempo limite da sessão (geralmente 20 minutos). Além disso, se você estiver usando um banco de dados para isso muito dados temporários, certifique-se de que não esteja em um sistema de backup automatizado.

Novamente, esta solução não é infalível e não tenho 100% de certeza de que ela esteja em conformidade com os requisitos de segurança da CC. No entanto, deve exigir que um invasor tenha controle total do tempo de execução do seu ambiente para descriptografar ativamente as informações do CC do cliente e, se um instantâneo do seu banco de dados for comprometido (muito mais provável/comum), apenas um CC pode ser forçado de cada vez, que é o melhor que você pode esperar.