Pergunta

Estarei implementando um PHP/mySQL configuração para armazenar informações de cartão de crédito.

Parece que AES_ENCRYPT/AES_DECRYPT é o caminho a seguir,

mas ainda estou confuso em um ponto:

Como mantenho a chave de criptografia segura?

Conectá-lo aos meus scripts PHP (que ficarão no mesmo servidor que o banco de dados) parece uma grande falha de segurança.

Qual é a solução de "melhores práticas" aqui?

Foi útil?

Solução

Você deve pensar muito sobre se REALMENTE precisa manter o CC#.Se você não tem um ótimo motivo, NÃO!A cada duas semanas você ouve falar de alguma empresa sendo comprometida e CC# sendo roubados.Todas essas empresas cometeram uma falha fatal: mantiveram informações demais.Mantenha o CC# até que a transação seja concluída.Depois disso, exclua-o.

No que diz respeito à segurança do servidor, a melhor ação é proteger o hardware e usar o soquete interno do sistema para MySQL, e bloquear qualquer acesso de rede ao servidor MySQL.Certifique-se de usar as permissões do sistema e do MySQL para permitir o mínimo de acesso necessário.Para alguns scripts, você pode considerar a autenticação somente gravação.Na verdade, não existe nenhum método de criptografia que seja infalível (pois você sempre precisará descriptografar e, portanto, armazenar a chave).Isso não quer dizer que você não deva - você pode armazenar sua chave em um local e, se detectar um comprometimento do sistema, poderá destruir o arquivo e inutilizar os dados.

Outras dicas

MySQL, existem seis etapas fáceis que você pode seguir para proteger seus dados confidenciais.

Passo 1:Remover curingas nas tabelas de concessão

Passo 2:Exigir o uso de senhas seguras

Observação:Use a opção “--secure-auth” do MySQL para evitar o uso de formatos de senha MySQL mais antigos e menos seguros.

Etapa 3:Verifique as permissões dos arquivos de configuração

Passo 4:Criptografar transmissões cliente-servidor

Etapa 5:Desabilitar acesso remoto

Etapa 6:Monitore ativamente o log de acesso do MySQL

Ferramentas de segurança

Eu concordo, mas não faça o cc se não precisar também.Mas se você realmente tiver também, certifique-se de que o arquivo que o contém não esteja acessível na web.Você pode escrever um binário que retorne a chave.Dessa forma, não é armazenado em texto não criptografado.Mas se o seu servidor estiver comprometido, ainda será fácil obtê-lo.

a segurança que você precisa depende da sua aplicação.por exemplo, se o único momento em que o cc# for usado for quando o usuário estiver logado (cenário do tipo loja on-line fina), você poderá criptografar o cc# com um hash da senha de texto simples do usuário, um per- salt do usuário e um salt cc# dedicado.não armazene esse valor permanentemente.

como você não está armazenando esse valor, o único momento em que você pode obter esse valor é quando o usuário digita sua senha para fazer login.apenas certifique-se de ter boas políticas de expiração de sessão e coleta de lixo em vigor.

se esta situação não se aplicar a você, descreva sua situação com mais detalhes para que possamos fornecer uma resposta mais adequada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top