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

28. La sicurezza in PHP: Session hijacking



                Terminiamo  con  questo  capitolo  la  breve  panoramica  sui  più
                comuni  problemi  di  sicurezza  con  alcuni  cenni  sul  session

                hijacking,  che  consiste  nel  “furto dell'identità”  di  un  utente
                che si collega a un sito web.


                Che cosa fa il malintenzionato che sottopone l'utente di un sito a

                session hijacking? Non fa altro che rubare l'identificativo di
                sessione dell'utente (ogni sessione ha un proprio id) per poi
                loggarsi  al  sito  spacciandosi  per  l'utente  a  cui  ha  rubato  le

                credenziali. Uno dei metodi più comuni per rubare le credenziali
                è sfruttare il cross-site scripting: abbiamo però già parlato nel

                capitolo  precedente  di  come  difenderci  da  questo  tipo  di
                attacchi,  quindi  vedremo  come  coprirci  anche  da  un  furto
                ottenuto  tramite  “session fixation”:  con  la  session  fixation,  i

                dati  verranno  rubati  tramite  una  sessione  creata  ad  hoc  dal
                malintenzionato.


                Certo, affinché si verifichi una session fixation devono essere

                soddisfatte  due  condizioni:  codice  vulnerabile  e  utente
                sprovveduto. Nell capitolo sulle sessioni non abbiamo parlato

                del  modo  in  cui  l'id  di  sessione  viene  propagato:  ciò  può
                avvenire tramite un cookie che viene appositamente creato per
                contenere  l'id  (cookie  che  si  estinguerà  alla  chiusura  del

                browser) oppure, nel caso in cui i cookie siano stati disabilitati,
                tramite metodi get e post. Il ladro di sessioni può convincere

                l'utente del nostro sito (magari tramite una mail o con un post su
                un  blog)  a  collegarsi  a  un  indirizzo  simile  a  questo:

                www.nostrosito.it/login.php?PHPSESSID=12345                                      dove,
                attraverso  la  query  string  e  ipotizzando  che  l'id  di  sessione

                venga propagato tramite get, decide il numero di sessione.

                Per  comprendere  meglio  il  meccanismo  di  un  attacco  session




                                                          188
   183   184   185   186   187   188   189   190   191   192   193