Gå til innhold

hjelp med logon funksjon


Anbefalte innlegg

Jeg har laget et logonscript, og tenkte at jeg ville lage det om til en funksjon for å lage en penere kode. Denne koden returnerer bare at brukernavn og passord er feil, uansett om det er riktig eller ikke, klarer dere å se hva som er feil?

 

Funksjon

***BORTE***

Logonsiden

***BORTE***

Endret av obrestad
Lenke til kommentar
Videoannonse
Annonse

sha1(md5($s1) . md5(sha1($brukernavn) . sha1(md5($s2) . md5($passord))));

WTF.

 

Det holder vel i lange baner med f.eks. sha1($salt.$passord);

 

Å hashe en hash to ekstra ganger med forskjellige algoritmer har ingenting å si, annet enn at det bruker unødvendig prosessorkraft på serveren din. Du får ikke en mer "unik" eller "sikker" hash du kan lagre av å gjøre det. Hvis du vil ha økt sikkerhet, titt på SHA256 eller SHA512 istedenfor SHA1 (PHP støtter disse algoritmene med hash()-funksjonen) - men jeg gjetter likevel på at svakheter i scriptet ditt vil vise seg alle andre steder enn i måten passordene til brukerne lagres på (f.eks. XSS, session hijacking, sikkerhetshull i webserver, etc.).

Lenke til kommentar
sha1(md5($s1) . md5(sha1($brukernavn) . sha1(md5($s2) . md5($passord))));

WTF.

 

Det holder vel i lange baner med f.eks. sha1($salt.$passord);

 

Å hashe en hash to ekstra ganger med forskjellige algoritmer har ingenting å si, annet enn at det bruker unødvendig prosessorkraft på serveren din. Du får ikke en mer "unik" eller "sikker" hash du kan lagre av å gjøre det. Hvis du vil ha økt sikkerhet, titt på SHA256 eller SHA512 istedenfor SHA1 (PHP støtter disse algoritmene med hash()-funksjonen) - men jeg gjetter likevel på at svakheter i scriptet ditt vil vise seg alle andre steder enn i måten passordene til brukerne lagres på (f.eks. XSS, session hijacking, sikkerhetshull i webserver, etc.).

Nå er ikke sløsing med prosessorkraft så negativt i denne sammenhengen. Dessto mer prosessorkraft som må til for å regne ut endelig hash, dessto bedre er det i og med at de som setter igang med bruteforce også må gjøre det samme. I WPA-PSK (TKIP mener jeg det var) går «nøkkelen» 4096 ganger gjennom en hash-algoritme, og det er langt fra uten grunn. For hvert nye forsøk man gjør må man kjøre den algoritmen 4096 ganger, noe som gjør at bruteforce blir uaktuelt selv om algoritmen i utgangspunktet kanskje ikke er så sikker.

 

Når det er sagt så er SHA-256/512 å foretrekke, og jeg er også helt enig i at det er andre faktorer som utgjør større sikkerhetsrisiko enn akkurat hash av passord. Dog, er ikke passord og salt tilstrekkelig langt er kan sha1($salt.$passord) utgjøre en betydelig risiko (ikke at det obrestad gjør vil være bedre i den sammenhengen heller).

Lenke til kommentar
Du sjekker jo ikke om passordet også stemmer noen steder.

$result = mysql_query("SELECT * FROM adm_user WHERE brukernavn='$bruker' AND passord='$passord'");

if($pw2 == $pw)

Vitsen med den linjen? Han bruker jo bare et passord til innlogging?

Vitsen med den linjen er vel å sjekke om passordet stemmer overens med hva som faktisk er lagret i databasen, går jeg ut ifra.

Lenke til kommentar

Det kan gjøres med spørringen du annbefalte. Jeg synes også det er en bedre løsning og gjør nesten alltid så mye som mulig med SQL og så lite som mulig med PHP. Alt jeg gjorde, var å vise at han faktisk sjekket passordet, slik det virket du sa han ikke gjorde.

Lenke til kommentar

Problemet med å kjøre alt i SQL stringen er jo at den allerede er kjørt før saltene er hentet ut av databasen.

 

Hva er feil her?

if (isset($_POST['bruker']))
{
 $bruker = $_POST['bruker'];
 $passord = $POST['passord'];

 

Hvordan bruke sha 256 eller sha 512?

 

Er det likt sha1, altså sha256() eller sha512()?

Lenke til kommentar
Hva er feil her?

if (isset($_POST['bruker']))
{
 $bruker = $_POST['bruker'];
 $passord = $POST['passord'];

 

Feilen der er nok følgende linje

$passord = $POST['passord'];

Mest sannsynlig er dette en skrivefeil, og siden PHP ikke har noen "magisk" global variabel som heter "POST", men "_POST" derimot :)

Det korrekte vil da bli å skrive

$passord = $_POST['passord'];

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...