Controllare l'indirizzo ip per mantenere una sessione ti provocherà una serie di accidenti da parte di quegli utenti che lavorano in una rete che usa più di un gateway per uscire su internet, per i quali richieste successive possono arrivare da ip diversi. A questi tu sbatteresti saltuariamente la sessione in faccia, apparentemente senza motivo.
Controllare lo user agent non ti darebbe questo problema, ma il rischio di sicurezza non diminuirebbe di molto: se qualcuno può sbattersi abbastanza da rubarti un cookie, figurati se non può riprodurre la tua stringa dello user agent.
Comunque si tratterebbe di memorizzare, invece dell'indirizzo ip che può cambiare, l'intestazione relativa allo user agent, cioè il browser dell'utente: questo non deve mai cambiare (a meno che l'utente non aggiorni il browser durante la sessione, ma non lo farà tutti i giorni!)