summaryrefslogtreecommitdiff
path: root/lib/session.php
diff options
context:
space:
mode:
authorFrédéric Guillot <contact@fredericguillot.com>2014-02-27 19:37:16 -0500
committerFrédéric Guillot <contact@fredericguillot.com>2014-02-27 19:37:16 -0500
commite3ff52ad89b1ac8549ee4b2b679cf9d7a2f96d29 (patch)
treec3455801543e8feff417c76d43ee0e2c670de4ad /lib/session.php
parent2f6b9353d54823ed12a57a6bd425323ceb1356d9 (diff)
Improve session creation
Diffstat (limited to 'lib/session.php')
-rw-r--r--lib/session.php22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/session.php b/lib/session.php
index 5ea6ceb0..688004b3 100644
--- a/lib/session.php
+++ b/lib/session.php
@@ -2,21 +2,39 @@
class Session
{
- const SESSION_LIFETIME = 2678400;
+ const SESSION_LIFETIME = 2678400; // 31 days
public function open($base_path = '/', $save_path = '')
{
if ($save_path !== '') session_save_path($save_path);
+ // HttpOnly and secure flags for session cookie
session_set_cookie_params(
self::SESSION_LIFETIME,
- $base_path,
+ $base_path ?: '/',
null,
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
true
);
+ // Avoid session id in the URL
+ ini_set('session.use_only_cookies', true);
+
+ // Ensure session ID integrity
+ ini_set('session.entropy_file', '/dev/urandom');
+ ini_set('session.entropy_length', '32');
+ ini_set('session.hash_bits_per_character', 6);
+
+ // Custom session name
+ session_name('__S');
+
session_start();
+
+ // Regenerate the session id to avoid session fixation issue
+ if (empty($_SESSION['__validated'])) {
+ session_regenerate_id(true);
+ $_SESSION['__validated'] = 1;
+ }
}
public function close()