Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xiro

session_regenerate_id

Recommended Posts

Bom dia, pessoal. como eu faço para usar session_regenerate_id de forma segura?

assim esta certo?

session_start();      // Inicia a sessão PHP 
$idvelho = session_id();
session_regenerate_id();
$idnovo = session_id(); 
ou eu tenho que fazer uma função com time (depois de 2 minutos deleta idvelho) para chamar session_regenerate_id e gerar o idnovo?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fiz a tradução do manual do PHP sobre a função session_regenerate_id semana passada, e lembro que a questão é que você não deve deletar a sessão antiga imediatamente após gerar o novo ID. Isso porque em redes instáveis, como wifi ou mobile, pode acontecer do pacote que contém o novo ID de sessão não chegar até o usuário (falha na rede); nesse caso o usuário acabaria perdendo a sessão porque o ID que ele tem nos cookies é o antigo e a sessão vinculada à ele foi removida. Por isso você não deve apagar a sessão imediatamente.


Já a questão do tempo, é que enquanto você não apagar/invalidar a sessão antiga, ela vai estar disponível para uso, com todos os dados, por outra pessoa (como um hacker/cracker). Isso quer dizer que se o hacker/cracker obter/roubar o ID de sessão antigo, ele vai poder utilizar a sessão que está vinculada à esse ID "para sempre".


Em poucas palavras: você não deve apagar a sessão antiga imediatamente (porque o usuário pode estar com o ID velho ainda), mas também não deve deixá-la disponível para sempre (porque outras pessoas poderiam utilizá-lo).


Eu acredito que o exemplo #2 da documentação é o mais indicado para fazer esse gerenciamento, pois ele tem a verificação do tempo e também faz várias tentativas de iniciar a sessão com o novo ID (caso o usuário esteja com o ID antigo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

(depois de 2 minutos deleta idvelho) para chamar session_regenerate_id e gerar o idnovo?

Começa ai as paranoias de Segurança! Recomendado para evitar ataques de Session Hijacking, é que você faça essa regeneração no momento de login ou nos extremos a cada hora no minimo, ou mais, pois existe outros, fatores não só este para impedir um roubo de sessão, SSL, token etc, senão seu sistema fica praticamente inviável se for utilizar o mesmo login entre subdomínios por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.