Javafree
Página Inicial do Fórum > Frameworks, APIs e IDE's

Class Login



Criar novo tópico   Responder tópico


  1. abreuhards
    Posts:2


    Comment Arrow

    Publicado em: 19/10/2014 18:31:36

    Olá, tenho essa classe chamada login que valida os dados no banco de dados, me deparei com encryptei a senha apartir da BD com md5, e sempre que tento faser login com os nomes e senha que difini na BD vem a mensagem que usuario ou senha não existem.

    como posso desencryptar as senha no momento da consulta ?

    alguem me pode ajudar?

  1. Comment Arrow

    Publicado em: 21/10/2014 18:26:49

    Abreuhards, blza?

    Não seria interessante encriptar a senha vinda do form e aí sim comparar com a senha que está no bd?
    _________________

    Att.
    Leonardo Mendonça
    Analista e Desenvolvedor Java Pleno



  1. ebarros
    Posts:2382


    Comment Arrow

    Publicado em: 24/10/2014 16:54:13

    [quote="leonardomendonca"]Abreuhards, blza?

    Não seria interessante encriptar a senha vinda do form e aí sim comparar com a senha que está no bd?



    Acho que isso não é mais adequado, pois se você habilitar o firebug, você consegue ver a senha informada pelo usuário mesmo o campo sendo do tipo password quando essa informação é trafegada para o servidor.

    O ideal mesmo é fazer com está sendo feito, com algumas ressalvas:

    Eu criaria um Listener(ServletContextListener) e no método contextInitialized eu definir uma key de encriptografia inicial(e.g. "%AES,appteste2014#" e na propriedade do onsubmit da pagina de login chamar uma função js para tratar a criptografia (e.g onsubmit="treat('${appkey}')) e nessa função você poderia usar alguma biblioteca JS publica, algo como o CryptoJS. Já no lado do server você faz um algoritmo de descriptografia baseado nessa key personalizada que você criou no listener e no algoritmo do CryptoJS, assim você consegue descriptografar a senha vinda do cliente e criptografar essa senha com um algoritmo melhor e mais seguro(algo do tipo SHA256) e também vai conseguir comparar a string para saber se o usuário existe ou não no banco de dados, pois depois de descriptografada a senha vida do cliente basta criptografa-la com o mesmo algoritmo que usou para salvar no banco e aí já era....vai conseguir validar as credenciais.

    Boa sorte!



  1. staroski
    Posts:4599


    Comment Arrow

    Publicado em: 24/10/2014 17:43:56

    Você não consegue decriptar MD5 e é justamente pra isso que ele serve, pra que você não consiga decriptar.
    Imagine que eu cadastrei minha senha, ela foi encriptada e persistida na base, assim ninguém além de mim sabe minha senha, a unica forma de validar o acesso é encriptar a senha informada pelo usuario e ver se ela bate com a senha persistida.

    Pergunta: Ah mas se eu esquecer minha senha?
    Resposta: Você implementa a funcionalidade de gerar uma nova senha aleatoria, enviar pro usuario, encripta e persiste na base.
    _________________

    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC
    Faço seu trabalho Java,
    clique aqui

    Acesse http://www.guj.com.br/



  1. ebarros
    Posts:2382


    Comment Arrow

    Publicado em: 24/10/2014 18:34:38

    [quote="staroski"]Você não consegue decriptar MD5 e é justamente pra isso que ele serve, pra que você não consiga decriptar.
    Imagine que eu cadastrei minha senha, ela foi encriptada e persistida na base, assim ninguém além de mim sabe minha senha, a unica forma de validar o acesso é encriptar a senha informada pelo usuario e ver se ela bate com a senha persistida.

    Pergunta: Ah mas se eu esquecer minha senha?
    Resposta: Você implementa a funcionalidade de gerar uma nova senha aleatoria, enviar pro usuario, encripta e persiste na base.



    Mas em que lugar você leu que eu menciono MD5? Eu apenas dei um exemplo de criptografia que você pode descriptografa-la como forma de segurança a mais no lado do cliente. E quem disse pra você que sua senha está segura com apenas type=password do html? Ou até mesmo que você crie seu próprio componente? Quem disse que essa sua senha está segura só pq voce mascara ela no client? Eu te respondo e provo que ela não está segura quando você trafegá ela para o server! Por isso o uso do listener e por isso uma forma a mais de dificultar a visualização da senha digitada pelo usuário por um 'invasor'. Acho interessante você ver entender melhor os conceitos do browser e linguagens scripts do lado client(web).



  1. ebarros
    Posts:2382


    Comment Arrow

    Publicado em: 24/10/2014 18:47:50

    Bom, talvez staroski você não tenha escrito a resposta para mim e sim para o autor da pergunta e nesse caso peço desculpa se fui rude. Mas eu discordo em uma coisa, fazer somente a criptografia do lado do server é o que todos fazem...e isso não funciona mais com eficiência, pois o browser eh uma caixinha do surpresa, acreditar somente na mascara de senha é uma doce ilusão, onde depois o programador diz: "puxa como a cara conseguiu invadir, ou como o cara conseguiu pegar a senha do usuário se ela tá criptografada no banco?" E aí que mora o perigo, sem contar que a gente(programadores, arquitetos, engenheiros de softwares, etc) nunca estamos livres do pior mau, que é quando o usuário não cuida da sua própria senha. Portanto o interessante e cercar todos os lados possíveis e mesmo assim estamos sujeitos a invasão.

    Abraço Lex Luthor!! hahahah



  1. Relacionados