* add samesite=lax flag for session cookie

This commit is contained in:
Max Pozdeev 2021-09-20 17:34:36 +03:00
parent 75647604e6
commit ea2ace9066

View file

@ -71,21 +71,8 @@ Lang::loadLang( Config::get('lang') );
$_mttinfo = array();
if (need_auth() && !isset($dontStartSession))
{
if(Config::get('session') == 'files')
{
session_save_path(MTTPATH. 'tmp/sessions');
ini_set('session.gc_maxlifetime', '2592000'); # 30 days session file minimum lifetime
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 10);
}
ini_set('session.use_cookies', true);
ini_set('session.use_only_cookies', true);
session_set_cookie_params(5184000, url_dir(Config::get('url')=='' ? getRequestUri() : Config::getUrl('url')), null, null, true); # 60 days session cookie lifetime
session_name('mtt-session');
session_start();
if (need_auth() && !isset($dontStartSession)) {
setup_and_start_session();
}
function need_auth()
@ -124,6 +111,38 @@ function check_token()
}
}
function setup_and_start_session()
{
if(Config::get('session') == 'files')
{
session_save_path(MTTPATH. 'tmp/sessions');
ini_set('session.gc_maxlifetime', '2592000'); # 30 days session file minimum lifetime
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 10);
}
ini_set('session.use_cookies', true);
ini_set('session.use_only_cookies', true);
$lifetime = 5184000; # 60 days session cookie lifetime
$path = url_dir(Config::get('url')=='' ? getRequestUri() : Config::getUrl('url'));
$samesite = 'lax';
if (PHP_VERSION_ID < 70300) {
# this is a known samesite flag workaround, was fixed in 7.3
session_set_cookie_params($lifetime, $path. '; samesite='.$samesite, null, null, true);
} else {
session_set_cookie_params(Array(
'lifetime' => $lifetime,
'path' => $path,
'httponly' => true,
'samesite' => $samesite
));
}
session_name('mtt-session');
session_start();
}
function timestampToDatetime($timestamp)
{
$format = Config::get('dateformat') .' '. (Config::get('clock') == 12 ? 'g:i A' : 'H:i');