Question

Maintenant, il existe un sujet qui pourrait être abordé de différentes manières. Si tout va bien, je pourrai le masquer au fur et à mesure que je décris mon problème et que je commence à recevoir des suggestions.

Je développe un site qui remplacera un site existant. Historiquement, l'un des problèmes que nous avons eu est que les robots d'araignée arrivent et aspirent tout le contenu. Maintenant, cela ne nous dérange pas que le contenu soit en cours de téléchargement. En fait, nous en sommes heureux, mais certains des téléchargeurs en masse et des accélérateurs de téléchargement se sont avérés problématiques avec le site actuel.

Ce que je cherche, c’est quelque chose qui s’assoit au début de mon php et qui tourne pas mal en premier. Il prend une empreinte de la requête de la page (ip, referrer, request uri, cookies, identifiant de session, peu importe) et la passe à ... quelque chose. Ce quelque chose compare ensuite l'empreinte digitale à celles de la dernière seconde ou des trois dernières secondes. Il renvoie ensuite un message basé sur un seuil préconfiguré indiquant quoi faire avec la demande.

Certains seuils sont:

  • L'utilisateur a demandé > x pages dans les dernières 0.n secondes.
  • L'utilisateur a demandé la même page dans < 0.n secondes.
  • L'utilisateur a soumis des données identiques à un formulaire au cours des n dernières secondes.

Vous voyez donc que je regarde des fenêtres assez étroites. Est-ce que détecter de telles choses est même faisable? Serais-je capable de le faire avec une sorte de fichier ou une source de données db? Tout ce que j'utilise pour stocker les empreintes digitales entre les chargements de pages va subir beaucoup de désabonnement, car la plupart des données seront conservées pendant une seconde ou deux. Devrais-je avoir quelque chose qui analyse les journaux Apache pour vérifier par rapport au seuil? Devrais-je rechercher une sorte de démon externe contenant les données pendant une seconde ou deux en mémoire, que je peux appeler à partir du script? Existe-t-il quelque chose dans Apache qui peut gérer cela, et dois-je juste cogner vers le serveur pour le gérer?

En supposant que je puisse faire quelque chose en PHP ou en tant que démon externe, comment puis-je réagir au comportement en dehors des seuils? Mon instinct dit les réponses HTTP, quelque chose comme 408 ou 503, mais mon intestin est souvent faux. Que puis-je faire pour dire au client de reculer un peu? Une sorte de & "Woah There &"; page?

Était-ce utile?

Autres conseils

Si vous n'avez pas à disposer d'une solution logicielle, pourquoi ne pas programmer votre routeur / pare-feu pour le gérer à votre place? Filtrer les attaques DOS (ou leurs équivalents) fait partie de son objectif.

Essayez mod_evasive

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top