fix: Расчет хеша для браузера

This commit is contained in:
origami11@yandex.ru 2024-02-13 15:33:25 +03:00
parent 548d5daaa9
commit 6ae14fd5f0
2 changed files with 12 additions and 15 deletions

View file

@ -36,10 +36,11 @@ class Authorization {
$_SESSION [$group] = $id; $_SESSION [$group] = $id;
$_SESSION [self::SESSION_BROWSER_SIGN_KEYNAME] = self::getBrowserSign(); $_SESSION [self::SESSION_BROWSER_SIGN_KEYNAME] = self::getBrowserSign();
$_SESSION ["sign"] = self::getRawSign();
$_SESSION ["time"] = time(); $_SESSION ["time"] = time();
} }
static function getBrowserSign() static function getRawSign()
{ {
$rawSign = self::SESSION_BROWSER_SIGN_SECRET; $rawSign = self::SESSION_BROWSER_SIGN_SECRET;
$signParts = ['HTTP_USER_AGENT']; $signParts = ['HTTP_USER_AGENT'];
@ -47,7 +48,14 @@ class Authorization {
foreach ($signParts as $signPart) { foreach ($signParts as $signPart) {
$rawSign .= '::' . (isset($_SERVER[$signPart]) ? $_SERVER[$signPart] : 'none'); $rawSign .= '::' . (isset($_SERVER[$signPart]) ? $_SERVER[$signPart] : 'none');
} }
return md5($rawSign);
return $rawSign;
}
static function getBrowserSign()
{
return md5(self::getRawSign());
} }
function logout() { function logout() {

View file

@ -108,7 +108,7 @@ class Login extends Filter
break; break;
*/ */
default: default:
$hash = $this->getBrowserSign(); $hash = Authorization::getBrowserSign();
// Если $hash не совпадает $_SESSION['hash'] то удаляем сессию // Если $hash не совпадает $_SESSION['hash'] то удаляем сессию
if (isset($_SESSION ['access']) && isset($_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME])) { if (isset($_SESSION ['access']) && isset($_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME])) {
if ($hash == $_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME]) { if ($hash == $_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME]) {
@ -125,17 +125,6 @@ class Login extends Filter
return false; return false;
} }
private function getBrowserSign() {
$rawSign = self::SESSION_BROWSER_SIGN_SECRET;
//$signParts = array('HTTP_USER_AGENT', 'HTTP_ACCEPT_ENCODING');
$signParts = array();
foreach ($signParts as $signPart) {
$rawSign .= '::' . (isset($_SERVER[$signPart]) ? $_SERVER[$signPart] : 'none');
}
return md5($rawSign);
}
private function enter($result) private function enter($result)
{ {
$this->user = $result; $this->user = $result;
@ -145,7 +134,7 @@ class Login extends Filter
$_SESSION["group"] = $result->getInt('access'); $_SESSION["group"] = $result->getInt('access');
$_SESSION["access"] = $result->getInt('id_user'); // id_user $_SESSION["access"] = $result->getInt('id_user'); // id_user
$_SESSION["random"] = $random; // id_user $_SESSION["random"] = $random; // id_user
$_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME] = $this->getBrowserSign(); $_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME] = Authorization::getBrowserSign();
$_SESSION["time"] = time(); $_SESSION["time"] = time();
} }