Co do sesji...
Masz ciasteczko z id sesji PHP, które użytkownik może edytować i odczytywać.
Masz sesję, którą użytkownik może odczytać.
Ciasteczko trzyma id sesji, wg. którego przypisywana jest Ci sesja.
Jeżeli użytkownik podmieni swoje id sesji na czyjeś. Przejmie jego sesję. Tak samo użytkownik, może posiadać jakieś spyware, które wykradnie id sesji.
To takie rzucenie światła na sesje... ja osobiście zapisuję do sesji dane, dzięki którym można przypisać użytkownikowi rekord z bazy danych (np. login i hasło (przepuszczone przez jakiś hash), id użytkownika itp.) i przepuszczone przez hash IP i User Agent.
W takim przypadku, nawet jeśli "szkodnik" pozyska id sesji użytkownika, to i tak będzie posiadać inne IP, do którego ta sesja nie należy.