Autor | Zpráva | ||
---|---|---|---|
Delegal Profil |
#1 · Zasláno: 7. 6. 2013, 15:49:52
Dobrý den, nedávno jsem si stáhl jaký si webový redakční systém, no a v kodech nikde nevidím session_start(); , a tak podobně...
Jediné co připomína kontrolů přihlášení je tohle: (v index.php) if(isset($_COOKIE['username']) && isset($_COOKIE['password'])) { if(loginCheck($_COOKIE['username'], $_COOKIE['password'])) { $data = loginCheck($_COOKIE['username'], $_COOKIE['password']); a v jiných souborech jako třeba "messages.php" je tohle: if(loginCheck($_COOKIE['username'], $_COOKIE['password'])) { no a soubor functions.php (tedy loginCheck) obsahuje tohle: function loginCheck($username, $password) { $query = sprintf('SELECT * from users where username = "%s" and password ="%s"', mysql_real_escape_string(strtolower($username)), mysql_real_escape_string($password)); if(mysql_fetch_row(mysql_query($query))) { $result = mysql_fetch_row(mysql_query($query)); $out['true'] = true; $out['id'] = $result[0]; $out['user'] = $result[1]; $out['mail'] = $result[3]; $out['image'] = $result[12]; $out['background'] = $result[15]; return $out; } else { return false; } } Pak ještě celý přihlašovací kod php je tohle: if(isset($_POST['login'])) { $username = $_POST['username']; $password = md5($_POST['password']); setcookie("username", str_replace(' ', '', strtolower($username)), $time); setcookie("password", $password, $time); if(loginCheck($_POST['username'], md5($_POST['password']))) { header("Location: ".$confUrl."/index.php?page=welcome"); } else { $TMPL['message'] = '<div class="divider"></div> <div class="notification-box notification-box-error"> <h5>Error!</h5> <p>Error with login!</p> <a href="#" class="notification-close notification-close-error">x</a> </div>'; } } Chci se proto zeptat jestli je to dobře, a jestli je jisté, že se žádny hacker přes tohle nedostane. (Nebo další svinstvo) Děkuji :) |
||
Rfilip Profil |
#2 · Zasláno: 7. 6. 2013, 17:39:47
Tento kod ma jednu velkou vadu, stačí se dostat pomocí XSS k cookie a pomocí rošíření pro Chrome "Edit this cookie" či jiného cookie manažera si ji do prohlížeče vložit a do změny hesla je pořád přihlášený. Tento způsob se nazývá session hijacking.
|
||
juriad Profil |
#3 · Zasláno: 7. 6. 2013, 17:56:30
Rfilip:
Ten samý problém je i při klasickém přihlášení přes PHP SESSION, tam se do Cookie ukládá SESSION ID. Nebezpečí tkví v tom, že po síti běhá potenciálně nebezpečná informace: MD5(password). MD5 není super bezpečná hashovací funkce a navíc, pokud autor šetří solí (provede MD5 přímo nad heslem, aniž by něco málo přihodil), tak lze spoustu slabých hesel odhalit pomocí předpočítaných tabulek, kterých se všude povalují tuny. |
||
Časová prodleva: 11 let
|
0