13. september 2006 - 23:14Der er
2 kommentarer og 1 løsning
Hvor sikkert er dette? (Logincheck, mysql)
Hey hey..
Jeg har siddet og rodet med et loginsystem som kører over mysql. Spørgsmålet er så om måden er sikker nok til at bruge eller om der kan forekomme fejl ved det.
Den tjekker om brugernavn og password findes i databasen + hvilke rettigheder de har (1 og 2)
Kan vist godt allerede nu afsløre at jeg ikke er den store haj til php :)
$resultat = mysql_query("SELECT Id FROM `gentle_medlemmer` WHERE navn = '$bruger' AND password = '$pass'"); $number = mysql_num_rows($resultat);
$resultat2 = mysql_query("SELECT Id FROM `gentle_medlemmer` WHERE navn = '$bruger' AND password = '$pass' AND rettigheder = '1'"); $number2 = mysql_num_rows($resultat2);
$resultat3 = mysql_query("SELECT Id FROM `gentle_medlemmer` WHERE navn = '$bruger' AND password = '$pass' AND rettigheder = '2'"); $number3 = mysql_num_rows($resultat3);
Du har en antagelse om at magic quotes er sat til, hvilket ikke er en selvfølge, denne antagelse kan du imødekomme med f.eks.: $bruger = $_POST['brugernavn']; $pass = $_POST['password']; if (get_magic_quotes_gpc()) { $bruger = stripslashes($bruger); $pass = stripslashes($pass); } $bruger = mysql_escape_string($bruger); $pass = mysql_escape_string($bruger);
Hvis du vil udskrive $bruger eller $pass kan du kører dem igennem en htmlentities() istedet/også.
Må ærligt indrømme at jeg ikke ved hvad magic quotes er. Jeg har søgt lidt på google og fundet ud af at det helst er en ting som man skal undgå..? Det hele gik nu mere på om der er nogle fejl ved det så personerne uden rettigheder ligepludselig får rettighederne 2. Eller kan det ikke ske?
I stedet for at søge i databasen 3 gange, så kan du nøjes med at søge 1 gang. $result = mysql_query("SELECT rettigheder, Id FROM `gentle_medlemmer` WHERE navn = '$bruger' AND password = '$pass'"); Derved kan du bruge den information som står i rettigheder til at skrive i din sessionvariable., $_SESSION['status'].
Jeg håber ikke der er nogen grund til at du gemmer brugerens kodeord i en sessionvariable. Af sikkerhedsgrunde burde du ikke gøre det. En anden ting du skulle gøre, er at kryptere dine brugeres passwords, det vil øge din sikkerhed på siden. Håber jeg har gjort mig nogenlunde forståelig.
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.