21. september 2006 - 15:17
Der er
16 kommentarer og 1 løsning
Sikre login system det bliver hacket hele tiden
Hej exp, Nogle som er god til at sikre et login system :D? Kunne i hvert fald bruge en lige nu. Min chat bliver hele tiden hacket igennem mit loginsystem. Det er skide træls, da han sletter alle brugere hver gang! Her er koden: <? session_start(); include("user/include/KaConnect.php"); function HandleLogin($brugernavn, $kodeord) { $db_hent = mysql_query("SELECT * FROM brugeroplysninger WHERE lower(brugernavn) = lower('$brugernavn')"); $hent = mysql_fetch_assoc($db_hent); if (strtolower($hent['brugernavn']) == strtolower($brugernavn) && $hent['password'] == md5($kodeord)) { $_SESSION['loggetind'] = "yes"; $_SESSION['Brugernavn'] = $hent['brugernavn']; $_SESSION['kodeord'] = $hent['kodeord']; $_SESSION['Rang'] = $hent['Rang']; $_SESSION['status'] = $hent['status']; $tid = time(); $time = time(); mysql_query("UPDATE brugeroplysninger SET kick = '2', rumid = '1', tjektid = '$time' WHERE brugernavn = '$_SESSION[Brugernavn]'"); mysql_query("UPDATE brugeroplysninger SET cache = '$time' WHERE brugernavn = '$_SESSION[Brugernavn]'"); return true; } return false; } if (isset($_COOKIE['brugernavn'], $_COOKIE['kodeord'])) { if (HandleLogin($_COOKIE['brugernavn'], $_COOKIE['kodeord'])) { $now = date("d/m-Y H:i"); } } else if (isset($_POST['brugernavn']) && trim($_POST['brugernavn']) != "") { if (HandleLogin($_POST['brugernavn'], $_POST['password'])) { if ($_POST["auto"] == "yes") { setcookie("brugernavn", $_POST['brugernavn'], time() + 60*60*24*180); setcookie("kodeord", $_POST['password'], time() + 60*60*24*180); } header("Location: KaLogin.php"); } else { print "Forkert brugernavn/adgangskode!"; } } if ($_SESSION['loggetind'] == "yes") { ?> <p>Du er logget ind!</p> <a href="java script:void(window.open('user/KaFrame.php','frameset','width=790,height=473,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no'))">Åben chatten</a> <a href="user/include/KaLogud.php">Logud</a><br></td> <?php } else { ?> <form name="form1" method="post" action="KaLogin.php"> <font face="Bodoni MT Condensed">Brugernavn: </font><input type="text" name="brugernavn" size="8"> <br><font face="Bodoni MT Condensed">Adgangskode:</font> <input type="password" name="password" size="8"> <br> <input type="submit" name="submit" value="Login"> </form> <? } ?> Håber i kan hjælpe :D 200 points er sat til den / de som hjælper
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
21. september 2006 - 15:47
#1
Du kan lave din SELECT til LIMIT 1 Ligeledes smid sleep(1); ind i din login funktion, så bliver brute-force ikke sjovt længere.
21. september 2006 - 16:04
#2
Kan du lave et eksempel?
21. september 2006 - 16:06
#3
Men ville det ikke også være mere sikkert, hvis jeg lavede en check om session kryp kode er magen til db kryp kode, eller kan de stadig hacke sig uden om?
21. september 2006 - 16:14
#4
Du bruger også variabler direkte fra $_POST['brugernavn'] direkte til din SQL, det er heller ikke godt. :o)
21. september 2006 - 16:18
#5
Ok, men kan du vise eksempel på sleep(1);?
21. september 2006 - 16:31
#6
Nu har jeg indsat: $brugernavn= $_POST['brugernavn']; $kodeord= $_POST['kodeord']; function HandleLogin($brugernavn, $kodeord) { $db_hent = mysql_query("SELECT * FROM brugeroplysninger WHERE lower(brugernavn) = lower('$brugernavn') LIMIT 1"); $hent = mysql_fetch_assoc($db_hent); i toppen
21. september 2006 - 16:39
#7
Lille rettelse: $brugernavn = htmlspecialchars($_POST['brugernavn']); $kodeord = htmlspecialchars($_POST['kodeord']);
21. september 2006 - 16:40
#8
Nu mangler jeg kun den der sleep(1); så køre det
21. september 2006 - 16:46
#9
F.eks. noget i stil med: function HandleLogin($brugernavn, $kodeord) { //Sleep som går bruteforce mindre sjovt. sleep(1); $user = mysql_real_escape_string(strtolower($brugernavn)); $pass = md5($kodeord); $db_hent = mysql_query("SELECT * FROM brugeroplysninger WHERE lower(brugernavn) = '$brugernavn' AND kodeord = '$pass' LIMIT 1"); if(mysql_num_rows($db_hent)==1) { $hent = mysql_fetch_assoc($db_hent); $_SESSION['loggetind'] = "yes"; $_SESSION['Brugernavn'] = $hent['brugernavn']; $_SESSION['kodeord'] = $hent['kodeord']; $_SESSION['Rang'] = $hent['Rang']; $_SESSION['status'] = $hent['status']; $tid = time(); $time = time(); mysql_query("UPDATE brugeroplysninger SET kick = '2', rumid = '1', tjektid = '$time' WHERE brugernavn = '$_SESSION[Brugernavn]'"); mysql_query("UPDATE brugeroplysninger SET cache = '$time' WHERE brugernavn = '$_SESSION[Brugernavn]'"); return true; } return false; }
21. september 2006 - 17:06
#10
Får fejl på linie 31: if(mysql_num_rows($db_hent)==1) og den vil ikke logge ind Fejl type: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/kasketten.dk/kasketten.dk/httpd.www/chat/KaLogin.php on line 31
21. september 2006 - 18:06
#11
Prøv lige: $db_hent = mysql_query("SELECT * FROM brugeroplysninger WHERE lower(brugernavn) = '$brugernavn' AND kodeord = '$pass' LIMIT 1") or die(mysql_error());
21. september 2006 - 18:18
#12
Nice nok det virker :D Læg svar... Men har du ikke nogle råd med if(!$_SESSION[Brugernavn]) { til at sikre det bedre, men fx. noget med tjek kode fra db.?
21. september 2006 - 18:26
#13
Det vil jeg ikke gøre. Evt. ville jeg lave: $_SESSION['loggetind'] = "yes"; $_SESSION['Brugernavn'] = $hent['brugernavn']; $_SESSION['kodeord'] = $hent['kodeord']; $_SESSION['Rang'] = $hent['Rang']; $_SESSION['status'] = $hent['status']; og så tilføje: $_SESSION['bruger_ip'] = $_SERVER['REMOTE_ADDR']; Når du så tjekker om $_SESSION['loggetind'] == 'yes' så skal du også tjekke om: $_SERVER['REMOTE_ADDR'] == $_SESSION['bruger_ip']
29. september 2006 - 19:18
#14
Tak skal du have, Læg svar
30. september 2006 - 15:44
#15
Du får et svar!
30. september 2006 - 19:47
#16
Takker for point.
30. september 2006 - 20:36
#17
Kan du finde ud af innerhtml eller få chatten til at lade vær med at blinke, måske bare klikke, så hjælp lige plzz på
http://www.eksperten.dk/spm/735332
Vi tilbyder markedets bedste kurser inden for webudvikling