1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login com md5 problem

Discussão em 'Web Development' iniciada por DarkWolfXP, 1 de Julho de 2006. (Respostas: 6; Visualizações: 1228)

  1. DarkWolfXP

    DarkWolfXP Power Member

    Bem é o seguinte eu fiz uma pagina para fazer check do formulario da pagina "login.php"
    o registro foi feito e a password foi encriptada com md5(); o problema k eu agr tenho e associar os dois, isto é, encriptar o $pass k é igual ao pass (nome do formulario da password) e dps associar na base de dados

    este script explica td... (é da pagina de check_login.php)
    O k é k esta mau? como poderei encriptar e dps comparar?
    Com este script obtenho login ou senha invalidos , entao experimentei meter nesse script echo "$pass_encrypted"; e demonstra a password encriptada e igual á da base de dados.(é igual pois a password k submeti no formulario é igual ao da base de dados)
    Agr n percebo pk é k ele n compara... isto é compara com $pass_encrypted ao pass do base de dados...
    Plz alguem me ajude :(
     
  2. SoundSurfer

    SoundSurfer Power Member

    Eu não sei programar em PHP, mas a construção da string do select parece-me muito estranha.

    Parece-me estares a comparar o login com a string '$login' e não com o valor da variável.
     
  3. DarkWolfXP

    DarkWolfXP Power Member

    Mas

    Mas essa script
    Ir a table no lugar de login = $login (ver se estao iguais caso n estejam esta script vai dar zero como iremos ver a seguir)
    e tb no lugar da pass = $pass_encrypted (para ver se no lugar da pass é igual ou nao da pass encriptada)
    dps deste expressao uso o count para ver se isto ta correcto ou n se der 0 n esta se der 1 esta.
    o meu problema e ke com pass_encrypted isto dá me zero e se for com pass (e meter a password encryptada do registro [vou ao phpmyadmin copio de la]) e meto no login e isto dá me um! (ker dizer entrou)
    So com md5 e k n me esta dar... alguem me pode ajudar -..-
     
  4. dragao-azul

    dragao-azul I fold therefore I AM

    boas,

    fiz um script de login à pouco tempo que tb usa md5 e funciona 5*, por isso so vejo uma coisa que possa estar mal:

    a pass na base de dados esta encriptada ou está normal? Tem de estar encriptada para funcionar...

    EDIT: Já agora, as variaveis estão a passar para esse script? é que dependendo dos servidores em vez de $pass e $login, tens de usar $_POST['pass'] e $_POST['login'].

    ;)
     
    Última edição: 2 de Julho de 2006
  5. DarkWolfXP

    DarkWolfXP Power Member

    Foi facil!

    a pass tava encriptada
    andei a ler k md5 encriptada X caracters e eu no phpmyadmin na parte da pass tinha 50 e tava kortar uns caracteres!!!! Por isso ele tinha razao n eram iguais um tinha menos caracteres ke outro mudei o valor para 60 e ja ta bombar ^^
    ouvi dizer k encriptaçao md5 e ouco segura andei ver k Sha256 e mt boa como funciona com ela? é da mm forma k o md5?
    e o sha1 e seguro?
     
  6. SoundSurfer

    SoundSurfer Power Member

    Exacto, o meu post anterior tem a resposta.

    Pesquisei mais um bocado e pelo que vi o operador de concatenação de strings no PHP é o "." (Posso estar redondamente enganado).

    ou seja:

    Em vez disto:

    Código:
    $check = mysql_query("SELECT * FROM `$table` WHERE login = '$login' AND pass = '$pass_encrypted'", $db);
    metes isto:

    Código:
    $check = mysql_query("SELECT * FROM `$table` WHERE login = '" . $login . "' AND pass = '" . $pass_encrypted . "'", $db);
    No entanto, tens de ter cuidado que desta maneira é possível um ataque por SQL injection...
    Tens de explorar melhor pela solução.
     
  7. ShadeX

    ShadeX Power Member

    Primeiro tens de entender do que estás a falar. MD5 e SHA não são enciptações e sim hash algorithms.

    Dado um conjunto x de dados, ambos produzem uma versão "condensada" não reversivél.

    O problema da segurança tem a ver com o facto de que, não sendo reversivél, podem exitir colisões.

    Imagina o caso simplista em que o algoritmo fosse username*password e tudo numeros:

    HASH=L*P

    para L/P 1/20, 2/10/, 4/5, 5/4, 10/2 e 20/1 HASH era sempre igual. Tinhas 6 casos de username/password identicos e não podias decidir quem era quem.

    Obviamente, tanto MD5 como os SHA são muito mais complexos, logo, não tens colisões ao pacote. Mas existem.

    Aliás, a premissa dos hash algoritms, para message digests, não é a de não conseguires colisões, e sim de ser "caro" em termos de cpu conseguir a colisão com um conteudo x decidido por ti.

    De qqr modo, preocupa-te mais com, como referiram, SQL injection do que com o login. Se não te preocupas, é mais fácil aceder á base de dados e sacar as coisinhas todas do que andar a adivinhar usernames/passwords.
     

Partilhar esta Página