Pergunta

Agora, há um assunto que poderia ser tomado muitas maneiras. Espero ser capaz de de-ofuscar-lo como eu descrever o meu problema e começar a receber sugestões.

Estou desenvolvendo um site que vai substituir uma já existente. Historicamente um dos problemas que temos tido é bots aranha entrando e sugando todo o conteúdo fora. Agora nós não se importa que o conteúdo está sendo baixado. Na verdade nós estamos contentes por ele, no entanto alguns dos downloaders granel e aceleradores de download provaram problemáticos com o site atual.

O que estou procurando é algo para se sentar no início da minha php que corre praticamente em primeiro lugar. É preciso uma impressão digital do pedido de página (ip, de referência, pedido de uri, cookies, ID de sessão, qualquer que seja) e passa para ... alguma coisa. Isso é algo que, em seguida, compara a impressão digital de impressões digitais no último segundo ou três. Em seguida, retorna uma mensagem com base em um limite pré-configurado o que fazer com o pedido.

Alguns limites são:

  • O usuário solicitou> x páginas nos últimos segundos 0.n.
  • O usuário solicitou a mesma página em <0.n segundos.
  • O usuário tenha apresentado os dados idênticos a uma forma nos últimos n segundos.

Então, você vê que eu estou olhando para algumas janelas muito apertados. Está a detectar essas coisas mesmo viável? Eu seria capaz de fazê-lo com algum tipo de fonte de dados arquivo ou db? O que quer que eu uso para armazenar as impressões digitais entre cargas de página vai experimentar um monte de churn pois a maioria dos dados será realizada por um segundo ou dois. Devo apenas ter algo que analisa os logs do apache para verificar contra o limite? Devo estar à procura de algum tipo de daemon externo que contém os dados para um ou dois segundos na memória que eu posso chamar do script? Há algo no apache que pode lidar com isso, e eu só precisa punt para o cara servidor para lidar com isso?

Assumindo que este é algo que eu possa fazer em PHP ou algum chamado daemon externo como faço para responder a um comportamento fora dos limites? Meu instinto diz respostas HTTP, algo como 408 ou 503, mas meu instinto é muitas vezes errado. O que posso fazer para dizer ao cliente para recuar um pouco? Algum tipo de "Woah lá" página?

Foi útil?

Outras dicas

Se não o fizer Have para ter uma solução de software, por que não programar o seu router / firewall para lidar com isso para você? Filtrando os ataques DOS (ou seu equivalente) é parte do que está lá para.

Tente mod_evasive

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top