| 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: 13 let
|
|||
0