Page 191 - Corso di PHP - Livello base
P. 191

session_regenerate_id();


                E  in  genere  va  fatto  dopo  aver  dato  il  via  alla  sessione  con

                session_start. La documentazione ufficiale di questa funzione si
                trova  all'indirizzo  http://php.net/manual/en/function.session-
                regenerate-id.php.  Inoltre  sarebbe  bene  che  le  direttive  di  cui

                sopra,    session.use_trans_sid  e    session.use_only_cookies,
                fossero impostate rispettivamente a 0 e 1. Comunque l'utilizzo

                di  session_regenerate_id  è  di  per  sé  già  sufficiente  per
                difendersi. È quindi bene rigenerare spesso, anche prima che
                l'utente abbia fatto login (inserendo quindi la funzione nella

                pagina di login, per esempio).


                Infine potremmo eseguire un controllo aggiuntivo sullo user
                agent dell'utente (perché niente impedisce che uno stesso id di

                sessione, come abbiamo visto, possa essere utilizzato da due
                utenti  diversi):  questo  consente  anche  di  avere  una  difesa

                contro attacchi di tipo “session sidejacking”. Attraverso questo
                tipo  di  attacco,  comunque  difficile  da  mettere  in  atto,  il
                malintenzionato  cerca  di  intercettare  l'id  di  sessione

                attraverso  i  pacchetti  di  rete  che  vengono  scambiati  tra  il
                server  e  il  browser  dell'utente.  Per  ovviare  a  questa  minaccia

                può essere utile fare in modo che l'accesso venga impedito nel
                caso in cui lo user agent di chi richiede l'accesso al nostro sito

                non corrisponda a quello dell'utente che ha effettuato il login.


                Per  fare  questo  abbiamo  bisogno  della  variabile  superglobale
                $_SESSION: dovremo associare a essa il valore dell'elemento
                HTTP_USER_AGENT                         della        variabile         superglobale

                $_SERVER,  meglio  se  codificato  tramite  funzione  md5.  Il
                tutto nella pagina o nella funzione che consente il login:


                 $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);





                                                          191
   186   187   188   189   190   191   192   193   194   195   196