O diretório PHP Sessions está sendo preenchido e transbordado

1

Executando PHP, Apache2 ... Nosso login parou de funcionar e qualquer coisa tentando pegar dados da sessão. Tudo parou de funcionar aleatoriamente às 7 da noite passada. Eu descobri que o diretório de sessões está sendo preenchido com toneladas de sessões por segundo. Se eu remover todas as sessões, ele se enche rapidamente novamente. Os registros de acesso, por algum motivo, pararam de funcionar. Isso soa como um ataque ... Se sim, o que posso fazer para pará-lo?

    
por user974407 27.08.2014 / 16:41

3 respostas

2

Parece que o código que você está usando para fechar uma sessão não está funcionando ou não existe. Você precisa destruir as sessões usando o seguinte:

Para destruir todas as sessões:

<?php
session_destroy();
?>

ou use isso para destruir peças individuais:

<?php
if(isset($_SESSION['views']))
  unset($_SESSION['views']);
?>

Extraído daqui: W3Schools Sessões PHP

    
por 27.08.2014 / 18:31
1

Se os seus registros não estiverem funcionando bem, parece que você está ficando sem espaço em disco. Nada nos logs de erro?

link

Verifique a duração da sua sessão - se for muito alto, talvez o servidor mantenha os arquivos até que o disco fique cheio.

Além disso, verifique as configurações de gc, probabilidade, divisor e tempo de vida, e tente defini-los nos valores padrão e veja se isso melhora a situação. O GC - coletor de lixo, é executado a 1% das solicitações e limpa sessões antigas não utilizadas. Se não funcionar ou estiver desligado, o disco será preenchido em algum momento.

Outra causa para muitos arquivos pode ser session.auto_start definida como 1; Nesse caso, você pode estar inicializando sessões quando realmente não precisa delas - no entanto, elas não ocupam muito espaço. Ou você pode estar fazendo session_start a cada solicitação, independentemente de não precisar dela.

    
por 27.08.2014 / 18:46
1

Eu analisaria 3 questões:

- Início da sessão : você está usando sessões somente quando necessário? Talvez você esteja iniciando sessões em partes que não precisam delas. Isso desperdiçará recursos e atrasará seu site.

- Duração da sessão : se o tempo de vida for muito grande ou for 0, as sessões obsoletas preencherão todo o espaço em disco que você tiver, com tempo suficiente. Dê uma olhada em session.gc-maxlifetime para dicas sobre como definir isso.

- Finalização da sessão : tente destruir a sessão com session_destroy() quando a sessão não for mais necessária.

Se você estiver sem espaço em disco, nenhum arquivo de sessão será gravado e nenhum log será atualizado. Ele desativará seu sistema de login e seus usuários continuarão tentando entrar, agravando o efeito.

Tente liberar algum espaço em disco e veja os registros. Muitas solicitações para recursos incomuns podem indicar que você está sob ataque. Se você limpar o espaço e os thigs ficarem normais, você encontrou o problema. Se o número de sessões continuar aumentando, você poderá estar sob ataque.

    
por 27.08.2014 / 19:07