Ignore:
Timestamp:
Jan 15, 2006, 1:52:55 PM (18 years ago)
Author:
nikrou
Message:

Improve security of sessions:

  • use only cookies to store session id on client side
  • use default php session system with database handler to store sessions on server side
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/branch-1_5/include/user.inc.php

    r817 r1003  
    2727
    2828// retrieving connected user informations
    29 if (isset($_COOKIE['id']))
     29if (isset($_COOKIE[session_name()]))
    3030{
    31   $session_id = $_COOKIE['id'];
    32   $user['has_cookie'] = true;
    33 }
    34 else if (isset($_GET['id']))
     31 session_start();
     32 if (isset($_SESSION['id']))
     33 {
     34   $user['id'] = $_SESSION['id'];   
     35 }
     36 else
     37 {
     38   // session timeout
     39   $user['id'] = $conf['guest_id'];
     40   $user['is_the_guest'] = true;
     41 }
     42}
     43else
    3544{
    36   $session_id = $_GET['id'];
    37   $user['has_cookie'] = false;
    38 }
    39 else
    40 {
    41   $user['has_cookie'] = false;
    42 }
    43 
    44 if (isset($session_id)
    45     and ereg("^[0-9a-zA-Z]{".$conf['session_id_size']."}$", $session_id))
    46 {
    47   $page['session_id'] = $session_id;
    48   $query = '
    49 SELECT user_id,expiration,NOW() AS now
    50   FROM '.SESSIONS_TABLE.'
    51   WHERE id = \''.$page['session_id'].'\'
    52 ;';
    53   $result = pwg_query($query);
    54   if (mysql_num_rows($result) > 0)
    55   {
    56     $row = mysql_fetch_array($result);
    57     if (strnatcmp($row['expiration'], $row['now']) < 0)
    58     {
    59       // deletion of the session from the database, because it is
    60       // out-of-date
    61       $delete_query = '
    62 DELETE FROM '.SESSIONS_TABLE.'
    63   WHERE id = \''.$page['session_id'].'\'
    64 ;';
    65       pwg_query($delete_query);
    66     }
    67     else
    68     {
    69       $user['id'] = $row['user_id'];
    70       $user['is_the_guest'] = false;
    71     }
    72   }
    73 }
    74 if (!isset($user['id']))
    75 {
    76   $user['id'] = $conf['guest_id'];
    77   $user['is_the_guest'] = true;
     45 $user['id'] = $conf['guest_id'];
     46 $user['is_the_guest'] = true;
    7847}
    7948
Note: See TracChangeset for help on using the changeset viewer.