Security - validate session

This commit is contained in:
FusionPBX 2024-01-22 14:20:28 -07:00 committed by GitHub
parent 34321b2b1d
commit ee202cd61d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 3 deletions

View File

@ -229,6 +229,9 @@ class authentication {
$_SESSION["user_uuid"] = $result["user_uuid"];
$_SESSION["context"] = $result['domain_name'];
//used to validate the session
$_SESSION["user_hash"] = hash('sha256', $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
//user session array
$_SESSION["user"]["domain_uuid"] = $result["domain_uuid"];
$_SESSION["user"]["domain_name"] = $result["domain_name"];
@ -236,7 +239,7 @@ class authentication {
$_SESSION["user"]["username"] = $result["username"];
$_SESSION["user"]["contact_uuid"] = $result["contact_uuid"];
//get the groups assigned to the user
//get the groups assigned to the user
$group = new groups;
$group->session($result["domain_uuid"], $result["user_uuid"]);

View File

@ -37,7 +37,7 @@
}
//start the session
if (function_exists('session_start')) {
if (function_exists('session_start')) {
if (!isset($_SESSION)) {
session_start();
}
@ -70,8 +70,19 @@
//define variables
if (!isset($_SESSION['template_content'])) { $_SESSION["template_content"] = null; }
//if session authorized is not set then set the default value to false
if (!isset($_SESSION['authorized'])) {
$_SESSION['authorized'] = false;
}
//validate the session address
if ($_SESSION['authorized'] && $_SESSION["user_hash"] !== hash('sha256', $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'])) {
session_destroy();
header("Location: ".PROJECT_PATH."/?path=".urlencode($target_path));
}
//if the session is not authorized then verify the identity
if (!isset($_SESSION['authorized']) || (isset($_SESSION['authorized']) && !$_SESSION['authorized'])) {
if (!$_SESSION['authorized']) {
//clear the menu
unset($_SESSION["menu"]);