Desde que os dados da sessão sejam passados entre o servidor e o cliente, você estará vulnerável a algum tipo de invasão em redes não seguras. A natureza sem estado do HTTP praticamente garante que qualquer pessoa com seus dados de sessão possa fingir ser você para o servidor.
Então, o que fazer? Você precisa transmitir com segurança as informações da sessão do servidor para o cliente, sem que os intrusos possam interceptá-la. A maneira mais fácil e certa é tornar seu site todo HTTPS, ou seja, sem tráfego não criptografado. Isso é muito fácil de implementar, já que você não precisa alterar seu aplicativo, apenas os servidores. A desvantagem é que aumenta a carga nos seus servidores.
Se isso não for uma opção, você precisará de alguma forma ofuscar os dados da sessão que o servidor passa para o cliente. E o cliente precisa de algum script para "desobstruir" os dados da sessão para passar de volta ao servidor na próxima solicitação. Sim, isso é "segurança através da obscuridade", e todo mundo sabe que isso não funciona. Exceto quando isso acontecer. Desde que o seu site não seja um alvo de alto valor, obscurecer os dados da sessão impedirá que os usuários casuais desta coisa 'firesheep' sequestrem seus usuários. Somente quando / se o seu site ficar no radar de alguém disposto a fazer engenharia reversa de sua ofuscação, essa técnica de mitigação falhará.