Evitando o seqüestro de sessão

Como você impede que vários clientes usem a mesma ID de sessão? Eu estou perguntando isso porque eu quero adicionar uma camada extra de segurança para evitar sequestro de sessão no meu site. Se um hacker de alguma forma descobrir o ID de sessão de outro usuário e fizer solicitações com esse SID, como posso detectar que há clientes diferentes compartilhando um único SID no servidor e depois rejeitar a tentativa de desvio?

EDITAR

Eu aceitei a resposta de Gumbo depois de uma cuidadosa consideração, porque cheguei à conclusão de que o que eu estou pedindo é impossível devido às restrições de umprotocolo HTTP sem estado. Esqueci o que talvez seja o princípio mais fundamental do HTTP, e agora que penso nessa questão parece um pouco trivial.

Deixe-me elaborar o que quero dizer:

Depois que o usuário A efetua login no example.com, ele recebe uma identificação de sessão aleatória, para simplificar, seja 'abc123'. Este ID de sessão é armazenado como um cookie no lado do cliente e é validado com uma sessão do lado do servidor para garantir que o usuário que efetuou login permaneça conectado enquanto se move de uma página da Web para outra. Esse cookie, é claro, não precisaria existir se o HTTP não fosse stateless. Por esse motivo, se o Usuário B roubar o SID do Usuário A e criar um cookie em seu computador com o valor 'abc123', ele teria sequestrado a sessão do Usuário A, mas simplesmente não há como o servidor legitimamente reconhecer que o Usuário B A solicitação é diferente das solicitações do Usuário A e, portanto, o servidor não tem motivos para rejeitar qualquer solicitação. Mesmo se fôssemos listar as sessões que já estavam ativas no servidor e tentarmos ver se alguém está acessando uma sessão que já está ativa, como podemos determinar que é um outro usuário que está acessando a sessão ilegitimamente e não o mesmo usuário? quem já está logado com um ID de sessão, mas simplesmente tentando fazer outro pedido com ele (ou seja, navegue para uma página diferente). Nós não podemos. Verificando o agente do usuário? Pode ser falsificado - mas bom como uma medida de Defesa em Profundidade, no entanto. Endereço de IP? Pode mudar por razões legítimas - mas em vez de não verificar o endereço IP, sugiro verificar algo como os dois primeiros octetos do IP, como até mesmo um usuário em uma rede de plano de dados que constantemente tem um IP mudando por razões perfeitamente legítimas normalmente só teria os dois últimos octetos de sua mudança de IP.

Em consclusão, é o HTTP sem estado que nos condena a nunca sermos capazes de proteger totalmente os nossos sites contra seqüestro de sessão, mas boas práticas (como as fornecidas por Gumbo) serão boas o suficiente para impedir uma boa maioria dos ataques de sessão. Tentar proteger as sessões do seqüestro negando várias solicitações do mesmo SID é, portanto, simplesmente ridículo e derrotaria todo o propósito das sessões.

questionAnswers(8)

yourAnswerToTheQuestion