Escolar Documentos
Profissional Documentos
Cultura Documentos
golb
Matheus Arquitetura Back- Front- Gestão Infraestrutura Liderança Mobile
Castiglioni End End
Aviso
A partir de 10/02/2022 o blog foi descontinuado em favor ao meu canal no youtube, ou seja, não haverá
novas publicações.
Irei dedicar e focar exclusivamente no meu canal para criação e compartilhamento de conteúdo, se você
tem interesse em continuar me acompanhando peço por favor que se inscreva no canal.
{
"email" : "matheushcastiglioni@gmail.com",
"senha" : "123456"
}
E como resposta:
Realmente, a senha foi salva como “123456” em nosso banco de dados, mas será que isso é uma boa prática?
Com toda certeza não, dessa forma qualquer pessoa que tenha acesso ao nosso banco de dados é capaz de ver
a senha de todos os usuários existentes, tornando nossa api nenhum pouco segura, mas como podemos
resolver isso?
Criptografia
Pois é, se você pensou em Criptografia fico feliz em dizer que acertou, para você que não acertou não tem
problema e para você que não conhece esse termo não tenha pressa, vou explicar logo a seguir.
O que é criptografia?
Lembra na época da escola quando brincávamos com a língua do P? Para falar “Casa” a gente falava: “Pca”,
“Psa”, em outras palavras, transformávamos a palavra casa em pcapsa, pois é, estavamos realizando uma
criptografia sem saber, basicamente o conceito é esse.
Podemos dizer e reduzir criptografia como transformar algo que todo mundo sabe o significado em algo que
poucas ou quase nenhuma pessoa sabe o que significa. Nesse caso é exatamente isso que devemos fazer com
nosso banco de dados, ao salvar o usuário, sua senha deve ser transformada em algo que ninguém consegue
ler, mas como podemos fazer isso em Node?
Criptografando a senha
Para criptografar uma senha com Node podemos utilizar o módulo Crypto onde é possível realizar várias
operações em relação a criptografia, principalmente com os objetos Cipher e Decipher .
Criando objeto responsável pela criptografia
Para começar a criptografar uma senha devemos criar um objeto Cipher , o mesmo é responsável por
criptografar dados, para criá-lo temos um método auxiliar dentro do módulo crypto chamado
createCipher :
Apenas isso não é suficiente, devemos passar alguns parâmetros para a criação do objeto, sendo eles:
algoritmo utilizado para realizar a criptografia e segredo utilizado para criptografar. Então vamos começar
criando um objeto responsável por armazenar essas configurações:
const DADOS_CRIPTOGRAFAR = {
algoritmo : "aes256",
segredo : "chaves"
};
Assim podemos passá-los para o método createCipher e reaproveitarmos em outros pedaços de nosso
código(se necessário), com isso, qualquer mudança necessária será feita em apenas um lugar.
Criptografando dados
Após realizar o passo anterior já devemos ter nosso objeto Cipher criado, precisamos agora dizer para ele
qual será a nossa informação à ser criptografada.
Como podem ver, podemos fazer isso através do método update . Por último devemos de fato realizar a
criptografia dos dados:
Aqui precisamos passar o tipo de criptografia que será utilizada, então como trata-se de um parâmetro vamos
adicioná-lo em nosso objeto de configuração:
const DADOS_CRIPTOGRAFAR = {
algoritmo : "aes256",
segredo : "chaves",
tipo : "hex"
};
Assim nossa função e objeto fica da seguinte maneira:
const DADOS_CRIPTOGRAFAR = {
algoritmo : "aes256",
segredo : "chaves",
tipo : "hex"
};
function criptografar(senha) {
const cipher = crypto.createCipher(DADOS_CRIPTOGRAFAR.algoritmo, DADOS_CRIPTOGRAFAR.segredo);
cipher.update(senha);
return cipher.final(DADOS_CRIPTOGRAFAR.tipo);
};
Testando a criptografia
Com a nossa função responsável por criptografar dados pronta, podemos testá-la ao cadastrar o mesmo
usuário, porém fazendo uso dela antes de realmente persisitir os dados:
{
"email" : "matheushcastiglioni@gmail.com",
"senha" : "123456"
}
Como podemos ver, agora nossa senha foi transformada de 123456 para a75959730e9d4f4fd26c1f0c8d73b1ac,
assim quando uma pessoa qualquer acessar nosso banco de dados não saberá o que significado essa String
cheia de numeros e letras misturados.
Descriptografia
Agora você deve estar pensando, como podemos obter novamente o valor da senha, equivalente aos 123456,
como tudo que vai, tudo pode voltar, para isso usamos a descriptografia, como podem observar, é o inverso da
criptografia, aqui pegamos em algo que ninguém sabe e transformamos algo em que todo mundo sabe.
Em outras palavras transformamos a75959730e9d4f4fd26c1f0c8d73b1ac novamente em 123456.
Descriptografando a senha
O processo para descriptografar é basicamente o mesmo da criptografia, mudando apenas os parâmetros
passado para os métodos update e final , além claro, do nosso objeto.
const DADOS_CRIPTOGRAFAR = {
algoritmo : "aes256",
codificacao : "utf8",
segredo : "chaves",
tipo : "hex"
};
function descriptografar(senha) {
const decipher = crypto.createDecipher(DADOS_CRIPTOGRAFAR.algoritmo, DADOS_CRIPTOGRAFAR.segredo);
decipher.update(senha, DADOS_CRIPTOGRAFAR.tipo);
return decipher.final();
};
Veja que reaproveitamos alguns parâmetros existentes em nosso objeto de configuração, mudamos o objeto de
Cipher para Decipher e como já mencionado antes, trocamos alguns parâmetros dos métodos update e
final . Com isso já podemos ter nossa senha visível de forma legível:
Inscrever
Matheus Castiglioni
Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela
curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar
todos aqueles que sou capaz.
Manipulando Containers Interpreter Padroes De Criando Meu Primeiro Utilizando Modulos Diminuind
Com … Projeto Em Java Web Service Com … Javascript De Forma … Processam
Atenção! Este jogo vai deixar até sua namorada com ciúmes!
MMOHAVEN.COM Jogar
If you own a mouse, you will never turn off your computer again.
Combat Siege Play Now
G Junte-se ao debate...
Nome
A
Alexon da Silva Moreira − ⚑
há 6 meses
Este lance de criptografar a senha sempre me deixa com dúvida, tudo bem entendi o processo....
mas eu não consigo entender uma coisa: Se pessoa tiver acesso ao banco de dados vai ver um
senha criptografa certo tudo bem até ai.... Mas se essa pessoa pegar estas senhas e aplicar o
mesmo comando para descriptografar, não teria acesso do mesmo jeto as senhas?
0 0 Responder • Partilhar ›
0 0 Responder • Partilhar ›
André Barbosa − ⚑
há 3 anos
0 0 Responder • Partilhar ›
M
Matheus Castiglioni Moderador > André Barbosa
− ⚑
há 3 anos
Porque você precisaria fazer isso André? Não acho que seja o ideal
0 0 Responder • Partilhar ›
Andre Nunes − ⚑
há 4 anos
0 0 Responder • Partilhar ›
M
Matheus Castiglioni Moderador > Andre Nunes
− ⚑
há 4 anos
Obrigado Andre.
0 0 Responder • Partilhar ›
W
Willian Cligor − ⚑
há 4 anos
1 0 Responder • Partilhar ›
M
Matheus Castiglioni Moderador > Willian Cligor
− ⚑
há 4 anos
Obrigado Willian.
1 0 Responder • Partilhar ›
F
Felipe Ricci Sponsored − ⚑
há 5 anos
Quer garantir até R$ 300 de bônus de aposta?
Muito bom! Me ajudou em uma demanda.
Sportingbet Cadastrar-se
A galera da comunidade devia dar mais valor a textos simples e objetivos como esse! Parabéns
pelo trampo
0 0 Responder • Partilhar ›
Quando o zumbido não para, faça isso em casa (Assista)
M
Recuperando a Audição
Matheus Castiglioni Moderador > Felipe Ricci − ⚑
há 5 anos
Obrigado Felipe, fico muito contente que tenha gostado. A ideia é tentar ajudar a
comunidade
Atenção!oEste
máximo possível.
jogo vai deixar até sua namorada com ciúmes!
0 Responder
MMOHAVEN.COM
0 • Partilhar › Jogar
If you own a mouse, you will never turn off your computer again.
Combat Siege Play Now