diff --git a/core/authentication/resources/classes/authentication.php b/core/authentication/resources/classes/authentication.php index ab0355aec5..9378a14844 100644 --- a/core/authentication/resources/classes/authentication.php +++ b/core/authentication/resources/classes/authentication.php @@ -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"]); diff --git a/resources/check_auth.php b/resources/check_auth.php index 66cf392292..5232247c27 100644 --- a/resources/check_auth.php +++ b/resources/check_auth.php @@ -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"]);