07. februar 2005 - 12:34Der er
10 kommentarer og 1 løsning
Kryptering af login - md5?
Hej,
jeg har kodet følgende loginscript, som fungerer fint nok. Det eneste jeg godt kunne tænke mig var, at få det krypteret. Jeg har prøvet at kigge på md5, men kan ikke helt få det til at spille. Er der en der kan hjælpe mig?
mysql_connect($sql_host,$sql_user,$sql_passwd)or die (mysql_error()); mysql_select_db($db)or die (mysql_error());
if ($_POST['username']<>"" && $_POST['password']<>"") { $result = mysql_query("SELECT * FROM ejerinformation WHERE username = '".$_POST['username']."'"); if (isset($result)) {
Du havde ikke behøvet at paste så meget. Folk har næppe brug for alt dit HTML :) Hvis du vil benytte MD5'ede passwords skal du køre MD5 funktionen på passwordet i PHP og sammenligne det med det password du har gemt i databasen (som naturligivs også skal være MD5-hashed). Læg dog mærke til at md5 ikke er en krypteringsmethode men en hash, hvilket vil sige at der ikke findes en omvendt funktion til den. Du kan altså ikke genstabe den orginale streng udfra en md5 hash.
Jeg tænkte jeg ville vise det hele, så folk kunne se HELE sammenhængen :-)
Vil det sige, at jeg skal finde ud af hvad eksempelvis passwordet "password" er krypteret som MD5 og så sætte det ind i databasen?
Jeg har i mit administrationsmodul lavet to felter, så jeg kan skifte brugernavn og adgangskode når jeg ønsker det. Det foregår ved at jeg blot indtaster hhv. nyt brugernavn, og ny adgangskode, klikker på opdater og så er det rettet. Det kan jeg vel så ikke mere? Skal jeg så indtaste det krypterede password?
Pointen er lidt at du skal være klar over, hvordan du rent faktisk gør dit system mere sikkert. Når brugerprofiler bliver oprettede indtaster de et password. Dette gemmes i databasen som en Md5 hash. Når du vil undersøge om brugeren senere indtaster det korrekte password laver du det nyindtastede til en md5-hash og sammenligner det med hvad du har i databasen..
Denne process med at hash'e et password bliver dog udelukkende gjort i backend-delen, hvormed det stadig sendes som klartekst mellem en brugers browser og dit loginscript. Derfor vil det stadig være muligt for tjediemand at sniffe dit password.
Den tilføjer et sikkerheds aspekt idet det er uheldigt, hvis folk fik adgang til en database, hvor alle passwords ligger i klartekst. Så er det bedre at de ligger som hashes). Hvis du vil gøre det sikkert skal du udover at have passwords gemt i hash'et format også have krypteret det dataflow der forstår mellem browser og dit script. Det kan f.eks. gøres via SSL, men jeg tror måske det er at skyde lidt over målet i dit tilfælde.
Hvis du mener at det er at skyde over målet med SSL kryptering, så mener du som alternativ, at jeg er kommet "et godt stykke vej" med hashet format af passwordet i databasen?
For de fleste formål ville jeg mene at det var tilstrækkeligt at du hashede passwords så det ikke er muligt at få en komplet liste over passwords hvis man får adgang til din database.
Som du kan se, er heller ikke Eksperten på SSL - og den er zq da så sikker, som den kan blive. Her kan man ikke engang komme i nærheden af sitet, hvis man er bruger og gerne vil logge ind :D
/mvh </bole>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.