diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 184b266446f..31d05541dbd 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -1,189 +1,179 @@ - + diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 2d8748d0b62..366ca47e0dc 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -117,10 +117,19 @@ if (! defined('NOCSRFCHECK') && ! empty($_SERVER['HTTP_HOST']) && ! empty($_SERV // This is to make Dolibarr working with Plesk set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs'); +// Security session +$sessionname="DOLSESSID_SECURITY"; +session_name($sessionname); +session_start(); +if (!isset($_SESSION['cryptkey'])) $_SESSION['cryptkey'] = mt_rand(); + // Set and init common variables // This include will set: $conf, $langs and $mysoc objects require_once("master.inc.php"); +//Fermeture de la session de sécurite, ses donnees sont sauvegardees +session_write_close(); + // Check if HTTPS if ($conf->file->main_force_https) { @@ -449,11 +458,9 @@ if (! isset($_SESSION["dol_login"])) if (!isset($HTTP_COOKIE_VARS[$entityCookieName])) { - // Todo: utiliser $user->datelastlogin pour un cryptage aléatoire - $entityCookie = new DolCookie($conf->file->main_cookie_cryptkey); + // Utilisation de $_SESSION['cryptkey'] comme cle de cryptage + $entityCookie = new DolCookie($_SESSION['cryptkey']); $entityCookie->_setCookie($entityCookieName, $entity); - - //setcookie($entityCookieName, $entity, 0, "/", "", 0); } } diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 4aaf0054576..4ce6de3f687 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -136,9 +136,6 @@ $conf->file->main_force_https = empty($dolibarr_main_force_https)?'':$dolibarr_m // Define charset for HTML Output (can set hidden value force_charset in conf.php file) if (empty($force_charset_do_notuse)) $force_charset_do_notuse='UTF-8'; $conf->file->character_set_client=strtoupper($force_charset_do_notuse); -// Define the encrypt key for cookie -//if (empty($dolibarr_main_cookie_cryptkey)) $dolibarr_main_cookie_cryptkey='123'; -//$conf->file->main_cookie_cryptkey=$dolibarr_main_cookie_cryptkey; // Define array of document root directories $conf->file->dol_document_root=array(DOL_DOCUMENT_ROOT); @@ -216,7 +213,6 @@ if (! defined('NOREQUIREDB')) } else if (isset($_COOKIE[$entityCookieName])) // Inside a browser navigation { - // TODO See to remove this later as it is a security hole include_once(DOL_DOCUMENT_ROOT."/core/cookie.class.php"); // Utilisation de $_SESSION['cryptkey'] comme cle de cryptage diff --git a/htdocs/user/logout.php b/htdocs/user/logout.php index 99b3e53d490..a0757962b0e 100644 --- a/htdocs/user/logout.php +++ b/htdocs/user/logout.php @@ -51,6 +51,12 @@ session_name($sessionname); session_destroy(); dol_syslog("End session in DOLSESSID_".$dolibarr_main_db_name); +// Destroy security session +$sessionname="DOLSESSID_SECURITY"; +session_name($sessionname); +session_destroy(); +dol_syslog("End security session in DOLSESSID_".$dolibarr_main_db_name); + // Init session $sessionname="DOLSESSID_".$dolibarr_main_db_name; if (! empty($conf->global->MAIN_SESSION_TIMEOUT)) ini_set('session.gc_maxlifetime',$conf->global->MAIN_SESSION_TIMEOUT);