Este site usa cookies para garantir que você obtenha a melhor experiência, Ao utilizá-los, você aceita o uso que fazemos dos cookies.

Pare de usar md5!!! Como criptografar senhas com PHP - Criptografar PHP
1670726485 hqdefault

Pare de usar md5!!! Como criptografar senhas com PHP

Neste tutorial em vídeo, ensinarei como criptografar senhas corretamente com PHP. MD5 NÃO ESTÁ MAIS EM BOA FORMA.


00:21:58
Neste tutorial em vídeo, ensinarei como criptografar senhas corretamente com PHP. MD5 NÃO ESTÁ MAIS EM BOA FORMA.
e fala galera bem-vindos a mais um vídeo e esse vídeo que você vai ver agora é um corte no meu curso PHP essencial então se você gostar dessa aula gostar da minha didática e tiver interesse em saber mais sobre o curso o link está aqui na descrição do vídeo Beleza então vamos para aula de e fala pessoal bem-vindos a mais uma aula do curso pega pertence ao e bom na aula de hoje a gente vai falar sobre criptografia que o negócio muito importante para quem está desenvolvendo qualquer tipo de sistema é bom Antes de tudo eu quero mostrar para vocês como não fazer criptografia e eu vou começar aqui eu criei um arquivo index né eu vou mostrar para vocês e eu vou usar uma função de criptografia chamada md5 vou digitar que minha senha que vai ser 12 João um dois três quatro Beleza então é porque que eu tô te falando que ia ser a forma de não fazer as coisas você vai viajar já a beleza primeiro que é criptografa que fotografar é você pegar uma string um número alguma algum dado e transformar a cidade em algo que não seja humanamente legível Então eu tenho uma senha aqui e ele converte Isso numa sequência de números e letras que representa essa senha Porque que a gente precisa criptografar coisas porque por exemplo a gente tem aqui o nosso banco de dados né vou fazer o login nele aqui e vou abrir uma página vamos supor livraria tem usuários clientes Mas porque você tem a senha dos clientes aqui tá você tem a senha de cada um dos seus clientes para eles poderem lugar é bom a primeira forma de nunca fazer isso fazer assim ó baixar vamos porque assim pode ter até 32 caracteres é a primeira forma de nunca fazer é guardar isso aqui assim vamos porque a senha duas três quatro cinco seis você vai lá e salvo 1 2 3 4 5 6 aqui essa é a forma que nunca mas nunca deve ser feita por que bom porque o seu site é pode ter vulnerabilidades quando você tem um sistema WordPress por exemplo você fica um tempo sem atualizado plug-ins ficam vulneráveis então é muito comum os sites possuem vulnerabilidades tá eventualmente você vai acontecer com todo mundo que deixar uma vulnerabilidade a questão é alguém vai achar essa vulnerabilidade e tirar proveito dela não se você está desenvolvendo um site que vai ter 30 acesso por mês é muito provável que isso nunca vai acontecer mas se você trabalha com clientes grandes que tem milhares de acesso é muito provável que isso vai acontecer e através dessas buner habilidades alguém pode por exemplo conseguir Puxar esse banco de dados inteiro para fora do site e baixar todos os registros que estão lá aí que que você tava quando você faz isso que acontece a pessoa vai lá o nome do usuário EA senha pronto ela tem acesso completo e restrito ao seu sistema se você criptografia se você salva isso assim ó quando essa pessoa abre esse banco de dados ela vai ver a senha assim e a senha que o usuário digita Não é criptografada ele vai digitar a senha normal só que o banco de dados vai ter somente a senha criptografada e quando esse hacker esse cara acessar esse banco de dados aí não vai conseguir ver a senha de todo mundo é e como é que funciona esse processo né tipo ah mas eu salvar senha assim como é que eu vou saber se o usuário digitou a senha certa ou não nos formulário de login a gente é realmente faz seguinte a pessoa digitar a senha então pessoas senha do usuário vai ser um dois três um dois três quatro minhas hein Tá certo então usuário falar digitou isso no seu formular aí você enviou essa senha para o post que que você faz que de fotografar e você vai lá criptografa a sua senha e depois você faz um select e no banco de dados né da seguinte maneira select* from usuários Where senha igual aí você passa a senha criptografada é para o usuário para o banco de dados aí vamos lá vai ver se alguém que tem aquela mesma criptografia de senha tem lá dessa forma se alguém invadiu o seu banco de dados a pessoa não consegue ler a senha de ninguém porque ela precisaria saber qual é a senha para conseguir que para gravar a criptografia é a princípio ela é feita para não ser reversível é a princípio A ideia é que ninguém consiga desfazer o cálculo disso daqui e chegar na nascem original a princípio Essa é a ideia só que aconteceu o md5 eu usei aqui por exemplo é um algoritmo de criptografia ele pega umas sim o número uma coisa e criptografia isso de uma forma vamos ver assim Teoricamente era para ser Irreversível a pessoa não não deveria ser possível de reverter isso daqui aí que em algumas pessoas começar a fazer o seguinte sempre que eu criptografar um dois três quatro O resultado vai ser esse é um Eco sem aqui sempre que eu criptografar um dois três quatro O resultado vai ser esse sempre sempre sempre sempre porque porque é o algoritmo é um algoritmo matemático ele pega o que você colocou joga dentro de si e tem uma saída se a entrada é um dois três quatro a saída sempre vai ser essa beleza que que o pessoal começou a fazer começar a pegar banco de dados e que tem senha sem algoritmos ou a criar banco de dados que onde eles sabem qual é a string que entrou e qual é a string que saiu e criar um banco de dados onde você pode colocar Qual que é o resultado né da criptografia e ele vai pegar vai pesquisar se alguém já inseriu lá no banco de dados dele algum texto que tem a é a mesma rede né mesma coisa o mesmo resultado de criptografia vai verificar se alguma senha Existe alguma senha bate e vai trazer de volta então o seu joga isso aqui os eclipses e ele facilmente vai dizer para mim que isso é um dois três quatro mas não é porque ele calculou de volta para poder desfazer o cálculo é porque simplesmente ele tem um banco de dados lá que tem uma tabela que tá mais ou menos assim é senha original aí ele tem lá o achar e senha criptografada então ele criou ele foi que tô gravando milhares e milhares de senha depois foi salvando Qual que é a senha que entrou e qual é a senha criptografada e depois ele simplesmente te disse isso com base no banco de dados dele então é muito pulso cara ensina a fazer a criptografia usando md5 e Cês viram como é fácil ser descriptografada pesquisar aqui no Google e no primeiro site eu cliquei eu já consegui descriptografar uma senha usando o site então nunca usa em md5 a primeira dica que eu dei foi nunca salvem a senha sem criptografia EA segunda dica é nunca usar em md5 que uma criptografia mais frágil Tá qual Como que você Rei o que eu faço a isso então bom o PHP ele já disponibiliza para gente uma ferramenta para a gente poder criptografar as nossas senhas que se chama é é uma função Zinha né e o nome dessa função é password-hash então é usuário digita a senha você tem que rege a se chama essa função password-hash e é que se diz o método de criptografia esse password default é um bom método para ser usado então não se preocupa em trocar esse método porque ele é seguro o suficiente para os sistemas que vocês vão vão desenvolver então quando eu faço isso aqui ó e ele vai gerar para mim essa Régio deixa eu tá dando comentar isso fora né porque a variável criptografado eu apaguei ela Oi e ele vai criptografar essa senha para mim ó e cada vez que atualiza a página ele gera uma nova senha criptografada e porque cada vez que ele já era uma senha nova criptografada ele já era uma senha diferente tipo como é que eu vou verificar no banco de dados se essa senha tá certa se cada vez que eu criptografia ela é gerada de forma diferente então por exemplo se o usuário digitou um dois três quatro agora e cadastrou no banco de dados a senha que a gente vai falar vai ser essa aí daqui um mês ele vai alugar de novo a gente vai lá criptografam sem e verifica se deu certo e compara né com a senha que tem no banco quando a gente for testar ó vai dar outra coisa então como é que ele fala como é que agente faz para poder bater isso bom a gente tem uma função também para poder verificar se a senha bate ou não que a gente tem essa senha aqui ó peço Words with que que você faz aqui você coloca a senha que a pessoa digitou E aí você coloca arrest que foi gerada por causa dessa aqui ó e a um pouco como stringhi né vou dar um ponto e, aqui e vou tirar fora isso daqui certo então eu tenho a senha e eu tenho Eco password verify que é uma função para verificar que a gente passa a senha descriptografada e depois a gente passa a sempre fotografada que vai estar no banco de dados então quando a gente atualiza Opa peraí isso daqui tem que ser passado com “simples é porque com aspas duplas ele passa entender isso como uma expressão regular que é uma outra ferramenta mais avançada aí do pega na verdade eu acho que é por causa do Cifrão né ele deve tentar ele descobre ele acha que isso aqui é uma variável e por isso ele daí então gente usa “simples e se atualizar ele tá dizendo o que que é um metro quer dizer que a senha bate com a rede que foi verificar Tá mas como é que a gente implementa isso de fato um sistema como é que a gente faria isso bom vamos fazer um sistema de login aqui bem simples para você entender como é que isso funciona o primeiro eu vou fazer um cadastro cadastrar a senha você vai ter um form que vai ter o método post e bateu input que vai ser do tipo pés forte eu vou deixar eu peço o input do tipo text porque o tipo peço que vocês não vão conseguir ver a senha que eu tô digitando e vai chamar senha foi botar um botão ele vai ser do Type submit e eu vou por cadastrar senha beleza bom eu vou vir aqui vou criar um arquivo de conexão um ponto PHP vou voltar aqui no na aula de conexão vou copiar o código para acelerar aqui o processo e vou trocar o bebê para senhas a gente vai criar um bebê banco de dados chamados senhas a senha não é que não é as senhas cria um banco de dados vou criar uma tabela chamada senhas também que vai ter duas colunas o id e a minha senha como adicionar mais uma também não por e-mail também Oi gente já aprendi um negócio na amarra aqui fazer um sistema de login bom é essa essa senha criptografada aqui do PHP se eu não me engano ela vai ter 64 caracteres vamos ver aqui não pega p E cria uma pessoa derrete na 104 caracteres qual que é o número de caracteres por segundo 255 caracteres Seria uma boa escolha Então vamos por aqui 255 caracteres como tamanho como eles mandam ali índice primário executar e Auto increment então sempre se for usar salvar senha usando essa função peço old hash você use o tamanho 255 tá no banco de dados como ele recomendou ele guarda Beleza então eu já tenho a minha tabela agora eu vou colocar aqui também um campo de e-mail Ah tá bom vou fazer aqui bem rápido tá porque a gente já passou essa parte formulário quantidade Então vou eu vou direto ao ponto aqui se existiu Push e-mail e a gente vai incluir o conexão. PHP e a gente vai fazer uma quer ver e me certinho tu senhas nascença gente tem e-mail, senha e os belos eu vou colocar aqui e os belos vão ser e-mail é o post e-mail não vou nem fazer validação tá gente é só para gente chegar aqui num exemplo que a gente possa aplicar o conceito da criptografia o e-mail e aqui a gente tem a senha show bom é Beleza então sempre que existir Esse poço ele vai servir pra gente isso no banco de dados tá só que eu quero que a minha senha seja inserida criptografado Então vou só chamar aqui a minha função peça or The Rest usar o password to be faught como algoritmo de criptografia e era isso que a gente precisa Vamos fazer um teste aqui eu vou vir para cá atualizar e-mail vai ser João@João pontocom e a senha vai ser um dois três quatro cinco seis cadastrar senha vem aqui já tem aqui minha senha e já tem que o e-mail do usuário então a gente já tem um criar mais um [email protected] um dois três quatro cinco seis a senha dos dois né então em seria aqui dois usuários e cada um tem a sua senha apesar da senha ser iguais reparem que a reveste de fotografia é diferente e o resto a gente essa esse essa coisa que o algoritmo retorna para gente Ah então tá agora eu preciso de um sistema de login né vou querer aqui uma um arquivo chamado login. Pegar Pedro vou criar a estrutura do HTML 5 vou criar um form o método vai ser post e ele vai ter um input o chamado e-mail vai ter um input chamado senha é do tipo peça Horto senha e vai ter o clássico botão type submit o logar que que a gente vai verificar aqui em cima agora que entra a parte que eu queria explicar para vocês bom se existir post e-mail a gente entra então nosso corpo beleza como é que a gente verifica se o usuário pode ser lugar ou não pode se logar bom muito simples a gente tem um e-mail que é o post e meio e a gente tem a senha que é o post senha certo que a gente vai fazer aqui a gente vai fazer uma consulta no banco de dados o select* frango é o nome do da tabela é senhas né Sem is Where e-mail igual a e-mail Então vou selecionar todos os usuários que tem esse mesmo e-mail certo eu vou executar essa Keri SQL exec igual a mais que ele Carrie o SQL cold war o acordei mais Kelly error beleza vou fazer aqui online se lembra do nosso SQL exec fat association’ e a gente vai atribuir suar não chamar de usuário então para cada usuário que tiver esse meio aqui eu vou fazer uma verificação no caso sempre vai ser um único cada usuário vai ter um e-mail não vai ter vários usuários com o mesmo e-mail então vou colocar aqui o limite de um porque eu quero que isso Rode só uma vez e como eu quero que você pode só uma vez e eu não preciso nem de sinuca aqui eu não devia nem ter escrito ele isso vai rodar só uma vez eu pego o único que sobrar que que a gente vai verificar bom a gente vai verificar se a senha bate então if usuário a senha que a senha que foi salva lá no banco de dados ó é esse senha aqui é igual igual não na verdade a gente vai usar e a gente vai fazer Oi gente vai verificar o seguinte ó se lembra da função password verify que eu passei para vocês então a gente vai verificar primeiro a senha que o usuário digitou e depois a hash que tá vindo do banco de dados que tá aqui ó em senha então a senha então eu fiz a consulta trouxe os dados do usuário por esse Array aqui o usuário eu vou ter usuários sem eu tô com comparando a senha que ele digitou no formulário com a senha do banco de dados se bater eu vou colocar usuário logado e se não bater eu vou colocar falha ao logar senha ou e-mail incorretos e depois vocês vão aprender quando a gente entrar na parte de sete anos como é que a gente faz essa parte de login né pra gente criar uma seção para pessoa continuar logada enquanto ela troca de página tudo mais aqui a gente só tá verificando se a senha bate com a do banco de dados não tem nenhum sistema de gerenciamento da sessão do usuário ele se manter logado que ele poder trocar de páginas e continuar logado Enfim então vamos voltar aqui e vamos testar né é o login. Pega P Então tem um e-mail tem a senha carregou no login de outra coisa minha aqui mas tá e-mail João Rocha João vamos digitar a senha errada duas três quatro Vamos jogar O opa tem algum é ruim aqui eu acho que eu esqueci de incluir o conexão. Pega P atualizar e vou enviar os dados fale alugar sem o e-mail incorreto beleza é isso mesmo que eu queria que aparecesse testar agora com a senha correta que é um dois três quatro cinco seis logar usuário logado tu tão com essas duas funções minhas é você consegue fazer tudo que depende de criptografia né Principalmente é em relação a peça outros as senhas e você pode fazer tudo isso no sistema de login a gente vai usar ela você pode fazer tudo isso usando password-hash e password verify e você pode ficar tranquilo que se alguém hackear Seu banco de dados as senhas estão protegidos beleza E para finalizar eu queria contar uma história aqui para vocês de uma coisa que aconteceu comigo é existe isso daqui ó base64 que é um método decodificação de dados que codificar a mente é traduz isso é a gente pode dizer assim que é como se a gente pegasse uma palavra em português Trace traduzir para outra língua em inglês isso ele é codificar para linguagem de Gleice pode dizer assim superficialmente e o Buzz 64 ele faz isso é meio que uma linguagem que a gente traduz isso um texto para outro só que é uma linguagem assim como a gente pode traduzir do texto para baixo 64 a gente pode diz traduzir de base-64 para texto não é uma criptografia que depois que você criptografar você não consegue diz traduzir então o base64 não é um algoritmo de criptografia e que aconteceu um cliente me procurou para eu poder refazer um sistema que ele tinha que tava dando alguns problemas e quando a gente abrir o banco de dados desses tem para vocês para vocês terem noção e sistema é um sistema de cartão de crédito um cartão de crédito de uma cidade da Prefeitura de uma cidade então ela não se utilizava alguma coisa Financeira no sistema importante é e esse cliente me procurou para a gente poder melhorar o sistema quando eu abrir o banco de dados cara todas as senhas estavam salvas em formato base64 tão programador profissional cara experiente achando que que tava protegendo a ciência foi lá e simplesmente codificou elas por causa 64 e com Pega até mesmo você pode fazer PHP base64 64 the cold E você tem algoritmos para poder decodificar o base64 é muito simples de fazer então o cara achou que ele tava protegendo sistema e na verdade ele não tava acontecendo praticamente nada então imagina se alguém que vai sacar de sistemas que é um sistema financeiro o tamanho da cagada do prejuízo poderia ser causado com isso por causa de uma falha de sei lá de falta de noção de conhecimento do cara que criou tô tô ensinando aqui processo jeito certo de fazer a coisa tá você pode fazer dessa forma que eu sugeri e ficar tranquilo e é é normal que aconteça aí e eu tô ensinando para vocês um jeito certo fazer as coisas normal que você se depara com gente ensinando a forma errada eu já vi muito vídeo no YouTube ensinando a fazer 45 que não é forma certa mas você aqui hoje aprendeu a forma correta de fazer isso Beleza bom a gente vai voltar nisso a gente vai usar esse conhecimento de novo quando a gente for fazer a parte de um sistema de login do nosso projeto prático e aí vocês vão ter mais contato com essa questão da criptografia beleza por hoje é só e até a próxima

About the author

Comentários

  1. Amigo veja essa situação: numa página tenho um formulário com dados que serão gravado na tabela tb1. Na mesma página tenho um select que é povoado com os dados da tabela tb1. Tem como atualizar esse select com os dados novos logo após o click que gravou os dados? Ou seja após clicar quero que grave os dados e já atualize o select logo em seguida incluíndo os dados novos….. já tentei diversas vezes mas não funciona se não atualizar a página.

  2. Aula espetacular, parabéns, comprei seu curso já há um tempo, ainda não conclui mas pretendo, eu estou precisando de ajuda e não consigo encontrar, como eu faço pra inserir dados em 3 tabelas diferente com apenas um formulário, exemplo de tabelas, PESSOA, ENDEREÇO e IMAGEM, não consigo encontrar nenhuma aula sobre isso.

  3. Está aparecendo esse erro: "Warning: Trying to access array offset on value of type null in C:xampphtdocsloginaulalogin.php on line 12

    Falha ao logar! Senha ou e-mail incorretos"

  4. Amigos, não caiam nessa de mudar ou super complicar. É só pegar, passar pra md5, adicionar (ou não) algum caractere específico e passar de novo pra md5. NUNCA vão descriptografar e seu sistema pode ficar compatível com outras linguagens que não conseguiriam se comunicar com o cripta do PHP.
    Dezenas de vezes precisei fazer isso para comunicar com programas que acessavam o mesmo banco através de Java, Delphi, Ruby…
    MD5 é quase universal e as principais linguagens utilizam.

  5. adorei a sua explicação, fácil de entender as diferenças. Nesse exemplo como faríamos para limitar um e-mail de registo, para o script dizer que um certo e-mail já se encontra registado na base de dados? Tenho essa dúvida, estou começando na programação php

  6. Só um detalhe isso não é criptografia, isso é transformar a senha em um hash, a criptografia é poder codificar e recuperar a informação original, a hash você codifica mas é "impossível" recuperar o dado.
    Hoje o hash é "recuperado" porque tentam milhares de palavras e dados conhecidos e salvam o valor criptografado para depois comparar com o dado salvo e descobrir quais podem ser as palavras chave.
    Os hash possuem mais de uma sequencia que resulta em um mesmo resultado, não sendo uma senha única, por exemplo se for responder qualquer dado com um numero finito de dados de resposta, se o dado de entrada for muito maior que o dado de resposta vários casos vão ter a mesma resposta.

    Por exemplo um dado de 1TB ser representado por 8 Bits dezenas de casos podem ter o mesmo valor.

    Existe até uma tecnologia de chave reversa que calcula qual o dado de entrada necessário para se obter o valor de chave correspondente a desejada, hoje recomendam abandonar MD5 e SHA-1 optando por chaves maiores, pois quanto maior a chave hash mais difícil é quebrala por chave reversa

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *