ZeRKoX Skrevet 9. juni 2008 Del Skrevet 9. juni 2008 (endret) 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 10. juni 2008 av obrestad Lenke til kommentar
Mats Danielsen Skrevet 9. juni 2008 Del Skrevet 9. juni 2008 Du sjekker jo ikke om passordet også stemmer noen steder. $result = mysql_query("SELECT * FROM adm_user WHERE brukernavn='$bruker' AND passord='$passord'"); Lenke til kommentar
Jonas Skrevet 9. juni 2008 Del Skrevet 9. juni 2008 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) Lenke til kommentar
Lokaltog Skrevet 9. juni 2008 Del Skrevet 9. juni 2008 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
Ernie Skrevet 9. juni 2008 Del Skrevet 9. juni 2008 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
Martin A. Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 Stor fare for at feilen din ligger her: if (isset($_POST['bruker'])) { $bruker = $_POST['bruker']; $passord = $POST['passord']; Lenke til kommentar
Mats Danielsen Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 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? Lenke til kommentar
Jonas Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 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
Mats Danielsen Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 Det gjøres jo med min query? Lenke til kommentar
Jonas Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 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
ZeRKoX Skrevet 10. juni 2008 Forfatter Del Skrevet 10. juni 2008 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
Alex Moran Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 echo hash('sha512', 'I am incredibly hot.'); Lenke til kommentar
Karlstad Skrevet 10. juni 2008 Del Skrevet 10. juni 2008 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
ZeRKoX Skrevet 10. juni 2008 Forfatter Del Skrevet 10. juni 2008 Ops, det la jeg ikke merke til. Det var en liten skriveleif... Tusen takk for all hjelp. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå