anúncios

quinta-feira, 19 de junho de 2025

Encriptação de Dados Sensíveis no MySQL

Quando lidamos com dados sensíveis, como CPF, telefone ou informações bancárias de usuários, a segurança da informação torna-se um dos pilares mais importantes de um sistema. Uma prática fundamental é armazenar esses dados de forma encriptada no banco de dados.

Exemplo prático: Encriptação de CPF no MySQL

Considere a seguinte estrutura de tabela:


CREATE TABLE clientes (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100),
    cpf VARBINARY(255)
);

Como funciona a encriptação com AES_ENCRYPT

O MySQL oferece a função AES_ENCRYPT(valor, chave) para encriptar dados. Aqui:

  • valor:
  • é o dado sensível que queremos proteger (por exemplo, o CPF).

  • chave:
  • é uma senha secreta utilizada no processo de encriptação e decriptação. Importante: A chave nunca deve ser armazenada dentro da própria base de dados. O ideal é mantê-la em um arquivo de configuração da aplicação ou em um gerenciador de segredos (Vault, AWS Secrets Manager, etc).

  • Recomendações sobre a chave:
  • A chave de encriptação deve ter pelo menos 16 bytes para evitar warnings e garantir maior segurança.

Exemplo de inserção de dados encriptados:


INSERT INTO clientes (nome, cpf) 
      VALUES ('Bjorn', 
             AES_ENCRYPT('123.456.789-00', 
             'chave_secreta_16b'));

Como realizar a decriptação dos dados:

Para visualizar os dados de forma legível, usamos a função AES_DECRYPT(coluna, chave):


SELECT nome, 
       CONVERT(AES_DECRYPT(cpf, 'chave_secreta_16b') 
       USING utf8) AS cpf 
FROM clientes;

Dica:

É recomendado sempre usar o CONVERT(... USING utf8) para transformar o resultado binário em texto legível.

Considerações importantes

Consistência nos dados:

Tentar decriptar dados que não foram previamente encriptados com AES causará erros ou retornará valores nulos. Garanta que todos os dados sensíveis sejam sempre armazenados de forma encriptada.

Conformidade com a LGPD:

A prática de encriptar dados sensíveis está totalmente alinhada com a LGPD (Lei Geral de Proteção de Dados).

Em caso de um eventual vazamento de dados, as informações estarão ilegíveis para qualquer atacante que não possua a chave de encriptação.

Boas práticas de segurança:

Infelizmente, ainda vemos notícias frequentes de vazamentos de bases de dados de órgãos públicos e grandes empresas. Muitas vezes, os dados estavam armazenados de forma simples e sem criptografia.

Uma política mínima de encriptação já evitaria que tais informações pudessem ser lidas por terceiros não autorizados.

Compatibilidade com MariaDB

As funções AES_ENCRYPT() e AES_DECRYPT() também são suportadas pelo MariaDB, garantindo boa compatibilidade com as versões do MySQL até a 5.7.

Porém, vale uma atenção especial para quem trabalha com MySQL 8.x ou superior, pois algumas mudanças foram introduzidas no modo de criptografia padrão (exemplo: modo de padding e modo de operação AES).

Recomendações ao usar entre MySQL e MariaDB:

Teste a criptografia e decriptação em ambos os ambientes.

Utilize sempre chaves com no mínimo 16 bytes.

Valide se o modo de operação AES é o mesmo entre as versões.

Evite migrações diretas de bases encriptadas entre MySQL 8.x e MariaDB sem testes prévios.

Considerações finais

A segurança de dados não deve ser tratada como um recurso opcional. Encriptar informações sensíveis no banco de dados é uma obrigação para qualquer sistema que armazene dados pessoais.

Com poucas alterações na modelagem e nas queries SQL, já é possível implementar uma camada extra de proteção.

Se você ainda não aplica encriptação de dados sensíveis no seu banco de dados no SGBD MySQL ou MariaDB, o momento de começar é agora.

Feito!

quarta-feira, 18 de junho de 2025

10 erros comuns de desenvolvedores

Iniciar a carreira como desenvolvedor pode ser um desafio cheio de aprendizados e armadilhas. Muitos programadores, especialmente os juniores, cometem erros que podem atrasar seu progresso e dificultar o desenvolvimento de habilidades sólidas. No presente artigo, vamos explorar os 10 erros mais comuns que você deve evitar para acelerar sua evolução na programação.

  1. Querer aprender muitas tecnologias ao mesmo tempo
  2. Um dos maiores erros é tentar aprender várias tecnologias simultaneamente, seja por hype, influência de vídeos ou pressão do mercado. Isso dispersa o foco e dificulta a aprendizagem consistente. O ideal é concentrar-se em uma ou duas tecnologias no máximo para assimilar bem os conceitos e práticas.

  3. Ignorar os conceitos fundamentais
  4. Muitos iniciantes pulam os fundamentos da linguagem, como variáveis, funções e classes, buscando resultados rápidos e visíveis. Porém, entender a base é essencial para construir códigos sólidos e resolver problemas complexos no futuro.

  5. Ficar preso em problemas sem pedir ajuda
  6. Sentir-se obrigado a resolver tudo sozinho é um erro. A comunidade de programadores é vasta e cheia de recursos, fóruns e pessoas dispostas a ajudar. Pedir ajuda não é sinal de fraqueza, mas sim de inteligência e colaboração.

  7. Copiar e colar código sem entender
  8. Com a facilidade da Inteligência Artificial (IA) e a abundância de códigos na internet, muitos copiam e colam soluções sem compreender o que estão fazendo. Isso pode gerar problemas futuros, principalmente na hora de corrigir erros ou adaptar o código.

  9. Não usar controle de versionamento
  10. Git é uma ferramenta de versionamento essencial no mercado de trabalho e para projetos pessoais. Não dominar o básico do Git é um erro grave que pode comprometer sua organização e colaboração em equipes.

  11. Consultar muitos tutoriais sem praticar (Tutorial Hell)
  12. Assistir a dezenas de vídeos ou tutoriais sobre o mesmo tema sem colocar a mão na massa é improdutivo. O aprendizado real vem da prática: testar, escrever e refatorar código constantemente.

  13. Ignorar as melhores práticas
  14. Programar "do seu jeito" sem considerar padrões e boas práticas resulta em código bagunçado, difícil de manter e inseguro. Aprender com o trabalho de outros desenvolvedores experientes é fundamental para escrever código limpo e eficiente.

  15. Comparar seu processo de aprendizagem com o dos outros
  16. Cada pessoa tem seu ritmo e estilo de aprendizado. Comparar-se com colegas pode gerar ansiedade e desmotivação. Foque no seu progresso e celebre suas conquistas pessoais.

  17. Desvalorizar a documentação
  18. Criar e manter documentação clara, comentários no código e explicações sobre o funcionamento das aplicações é parte do trabalho do programador. Ignorar isso pode dificultar a manutenção e o trabalho em equipe.

  19. Desistir diante das dificuldades
  20. Programar é resolver problemas diariamente. Se você está travado há dias, a solução não é desistir, mas buscar ajuda, revisar o código e persistir. A resiliência é uma qualidade essencial para qualquer desenvolvedor.

Considerações finais

Errar faz parte do processo de aprendizado, mas reconhecer esses erros e corrigi-los rapidamente é o que diferencia um bom desenvolvedor de alguém que ficará estagnado. Além dos pontos citados, vale reforçar uma observação muito importante: escolher o sistema operacional errado para desenvolver pode limitar seu crescimento técnico.

Muitos iniciantes utilizam o Windows como sistema operacional principal, ignorando que a grande maioria dos ambientes de produção em servidores utiliza Linux. Trabalhar diretamente em um ambiente semelhante ao de produção desde o início vai facilitar a familiarização com o terminal, permissões de arquivo, estrutura de diretórios, deploys e ferramentas amplamente utilizadas no mundo real (como Docker, Git, Nginx, entre outros). Isso não significa que o Windows não seja uma boa estação de trabalho para outras finalidades, mas se o seu objetivo é se tornar um desenvolvedor back-end, DevOps, ou trabalhar com cloud e infraestrutura, não utilizar Linux é um erro estratégico que pode te atrasar muito no mercado de trabalho.

O importante é lembrar que a carreira de desenvolvimento é uma maratona, não uma corrida de 100 metros. Foque no aprendizado constante, evite os erros mais comuns e, principalmente, busque se aproximar ao máximo do ambiente real onde suas aplicações irão executar.

Se você evitar esses deslizes, com certeza terá uma base sólida para crescer na carreira de forma consistente e profissional.

Participe dos nossos grupos no Telegram:

Programadores Brasil Dicas, vagas, tecnologia e networking.

Linux Para Todos Aprendizado e suporte para quem quer migrar ou dominar o Linux no dia a dia do desenvolvimento.

Feito!