Como armazenar as senhas corretamente com PHP

I hurried into the Examprepwell local department store to grab1 some last minute exam 70-483 dumps Chirsmas gifts. I 300-135 tshoot pdf Learningpdf looked at all the 1Z0-061 Certification people Examprepwell and grumbled2 to myself. I would be in here forever and I just had so much to do. Chirsmas was beginning to become such a drag. I kinda wished that I could just sleep through Chirsmas. 300-135 tshoot pdf But I 1Z0-061 Certification hurried the best I could through all the people to the toy department. Once again I kind of mumbled3 to myself at 1Z0-061 Certification the prices of all these 300-135 tshoot pdf toys, ADM-201 certification and 1Z0-061 Certification wondered if ADM-201 certification the 1Z0-061 Certification grandkids would even play whit4 them. I found myself in Learningpdf the doll aisle5. Out of the corner of my eye I saw a little boy about Examprepwell 5 holding a lovely doll.He kept 1Z0-061 Certification Examprepwell touching6 her hair and he held her so gently. I could not seem to help myself. I just kept exam 70-483 dumps loking over at the little boy and wondered who the doll was for. I watched him ADM-201 certification turn exam 70-483 dumps to a woman and he Learningpdf called his aunt by name and said, “Are you sure I Examprepwell don’t have enough money?” She replied a bit 300-135 tshoot pdf impatiently, “You know that 300-135 tshoot pdf you don’t have enough money for it.” The aunt told the 70-486 study guide little boy not 1Z0-061 Certification to go anywhere that she had to 1Z0-061 Certification go and get some 70-486 study guide other things and 70-486 study guide would be back in a few minutes. And then she left the aisle. The boy continued to hold the 70-486 study guide doll. After a bit I exam 70-483 dumps asked the Learningpdf boy who the Learningpdf exam 70-483 dumps doll was for. He said, “It is the doll my sister wanted so badly for Chirsmas. She just knew that Santa would bring it. “I told him that maybe Santa was going to bring it . He said, “No, Learningpdf Santa can’t go Learningpdf where my 70-486 study guide sister is…. I have to give the exam 70-483 dumps doll to my Mama to take to her. “I asked him where his exam 70-483 dumps siter was. He looked at me with Examprepwell the saddest eyes and said, Examprepwell ADM-201 certification “She was gone to be with Jesus.

My Daddy says that Mamma is going to ADM-201 certification have to go be with 1Z0-061 Certification her.” My 70-486 study guide heart nearly stopped beating. Then the boy looked at me again and said, “I told my Daddy to tell 1Z0-061 Certification ADM-201 certification my Mama 300-135 tshoot pdf not to go yet. 70-486 study guide I told him to tell her to wait till I got back from the store.” Then ADM-201 certification he asked Examprepwell Examprepwell me if i wanted to see his picture. I 70-486 study guide told 300-135 tshoot pdf him I’d love to. He pulled out some picture he’d had taken at Examprepwell the front of the store. He said, “I want 300-135 tshoot pdf my Mama to take this with ADM-201 certification her so the dosen’t exam 70-483 dumps ever forget exam 70-483 dumps me. I love my Mama so Examprepwell very much and I wish she dind not have to leave me.But Daddy says she will need to be with my sister.” I saw that Learningpdf the little boy had lowered his head 300-135 tshoot pdf and had grown so qiuet. While he was not looking I 300-135 tshoot pdf reached into my purse and pilled 70-486 study guide out a handful of bills. I asked the little boy, “Shall 1Z0-061 Certification we count that miney one more 1Z0-061 Certification Examprepwell Learningpdf time?” He grew excited and said, “Yes,I just know it has to be enough.” So I slipped my money in with his and we began to count exam 70-483 dumps 70-486 study guide 70-486 study guide it . Of course it was plenty for the doll. Learningpdf He softly said, “Thank you Jesus for giving me enough money.” Then 300-135 tshoot pdf the boy said, “I just ADM-201 certification asked Jesus to give me enough money to ADM-201 certification buy this Examprepwell Learningpdf doll so Mama can take it with her to give ADM-201 certification my sister. And he heard my prayer. I exam 70-483 dumps wanted to ask him give 300-135 tshoot pdf for enough to buy 70-486 study guide my Mama a 1Z0-061 Certification white rose, but I didn’t ask him, but he gave me enough to buy the doll and a rose for my Mama. She loves white ADM-201 certification rose so Learningpdf much. “In 70-486 study guide a few minutes the 70-486 study guide aunt came ADM-201 certification back and I exam 70-483 dumps wheeled my cart 300-135 tshoot pdf away. 70-486 study guide I could not keep from Examprepwell Learningpdf thinking about the little boy as I finished my shoppong exam 70-483 dumps in exam 70-483 dumps a ttally different spirit than when I 1Z0-061 Certification had started. And I 70-486 study guide kept remembering a story I had seen in the newspaper several days earlier about a drunk driver 300-135 tshoot pdf hitting a 300-135 tshoot pdf ADM-201 certification car and killing7 a little girl and the Mother was in serious condition. The family was deciding on whether to ADM-201 certification remove the life support. Now surely this little boy did not belong with that exam 70-483 dumps story.Two days later I read in the paper where the 300-135 tshoot pdf family had disconnected the life support and the young woman ADM-201 certification had died. I could Learningpdf exam 70-483 dumps Examprepwell not forget the little boy and just kept wondering if the two were somehow connected. Later that day, I could not help myself and I went out and bought aome white roses and took them to the funeral home where the Examprepwell yough woman was .And there she was holding a lovely white rose, the beautiful doll, and the picture of the little 1Z0-061 Certification boy in the Learningpdf store. I left there 1Z0-061 Certification in tears, thier life changed forever. The love that little boy had Learningpdf for his little sisiter and his mother was overwhel. And in a split8 second a drunk driver had ripped9 the life of that little boy to pieces.

Garantir que as senhas dos usuários estão armazenadas corretamente no banco de dados da um certo trabalho, mas assim, ainda não é ciência de foguete, para você usar md5 porque é fácil. Vale lembrar que o md5 não serve para nada e bem no nível do NADA MESMO.

Muitas vezes, a validação de login fica como responsabilidade do banco de dados (Oi? Claro que não, ta louco!).

Quem não fez algo assim (favor ignorar o sql injection):

$sql = “SELECT id FROM user WHERE email=’$email’ AND password=MD5(‘$password’)”;

Você não valida depois se veio uma linha? Então, quem validou foi o banco…

Sendo desse jeito, não temos muito o que fazer. A primeira coisa que precisa ocorrer é alterar quem valida a senha do usuário e isso quem deve fazer é a aplicação.

Nesse contexto, vamos usar as funções de senhas do PHP.

password_hash

password_verify

Conforme manual, password_hash, vai gerar uma senha bem diferente do md5 e se fizer certinho não mexe mais (spoiler, explico no final).

Simples nesse nível:

Agora, o que é o que.

PASSWORD_DEFAULT

É uma constante do PHP que justamente gerencia qual será o algoritimo de criptografia. Ela será alterada caso em uma nova versão do PHP tenha uma forma melhor de criptografia.

cost

É o “custo” daquele hash, quanto maior o custo maior é o tempo para gerar uma senha (explicação prática do cost aqui). Por padrão o cost é 10, logo se eu não passase ele daria na mesma.

Blz, já salvei a senha do meu usuário e tudo mais, agora como eu valido isso?

Pois é, “tudo” isso.

Como bônus, agora vem a parte do corretamente.

O “password_needs_rehash” verifica se o hash usado como senha ainda é o melhor que há disponível.

Pense assim, hoje você esta usando o “cost” 10, mas amanhã vai começar a usar o 11, ou 12, ou o “PASSWORD_DEFAULT” mudou, quando que você vai alterar o hash da senha do usuário? Dessa forma, você já aproveita que você tem a senha do usuário e criptografa ela no novo padrão de hash.

Dessa forma, quando mudar o padrão de criptografia, ou quando você mudar a configuração do “cost” seu código já vai estar preparado para isso e o hash vai ser alterado para o mais novo.

Espero que isso ajude 🙂

Code Review

Faça Code Review, do que? De tudo.

Quando? A cada pull request.

E se eu não uso pull request? Se o time tem mais pessoas comece a usar.

Sério? Não não, escrevi tudo isso para te sacanear. Claro que precisa

Ela não é apenas para Open Source, fica a dica.

Brincadeiras a parte, fazer a revisão do código é a melhor forma de espalhar o conhecimento dentro do time, além disso, melhor maneira para que todos saibam e sigam os padrões de desenvolvimento adotados.

Pense no código como uma criança, ela precisa crescer, precisa de liberdade para criar as suas próprias ideias, fora isso, precisa também de supervisão, de alguém mostrando o caminho certo. É nesse momento que entra o Code Review, garantir que as influências das pessoas em sua criança sejam as melhores possíveis.

Não pense na revisão de código como algo para apontar os erros dos outros (isso é ser babaca), pense nela como algo que vai te fazer pensar diferente sobre o seu código, além de ouvir melhorias em sua forma de desenvolver, você vai receber códigos de várias pessoas que pensam diferente de você, assim, o estilo de programar e as formas de pensar serão diferentes. Assim logo você vai começar a pensar diferente.

Usando um exemplo, pegue o SEU código de um ano atrás e procure por coisas que você melhoraria nele, prepare-se, você vai anotar muita coisa. Vou deixar a continuação dessa parte para o post de refactoring.

Além de você melhorar o seu código, você vai garantir que o projeto que você esta vai ter um futuro melhor. Quando você revisa o código de alguém, pergunta por que a pessoa tomou aquela decisão e aponta pontos que podem ser melhorados, você vai ter um código melhor em sua produção. Dessa forma você vai poder ir para a casa e saber que no dia seguinte ele vai estar bem cuidado, afinal, nós não sabemos o dia de amanhã, podemos não estar mais nesse projeto, na empresa, ou pior, um bug em produção em um código que não da para entender.

Seguem aqui dois links falando um pouco mais sobre isso e também como fazer a revisão.

https://medium.com/medium-eng/the-code-review-mindset-3280a4af0a89

https://medium.com/swlh/code-reviews-can-make-or-break-your-team-a3cfdcc15de1

E era isso. Abraço a todos