7
votes

Demande HTTP de l'accélérateur dans le servlet Java

Dans un servlet Java, comment puis-je accélérer les demandes HTTP provenant des utilisateurs en fonction de l'adresse IP du client? Je ne veux pas servir plus que des demandes x par seconde provenant d'une adresse IP source particulière où X est configurable et ayant des valeurs pratiques dans [0,1; 10] Gamme (de 1 demande en 10 secondes à 10 demandes par seconde).


0 commentaires

5 Réponses :


2
votes

J'écrirais un filtre pour cette tâche.


0 commentaires

3
votes

Utilisez un filtre de servlet: si vous êtes sur une jetée 7.0 ou plus, il y a Ce


0 commentaires

2
votes

Comme @ejp dit, en utilisant un filtre avec une hachure qui stocke le dernier temps d'accès par clé d'adresse IP. 10 demandes une seconde traduirait à 100 ms entre les appels, le minimum. Envoi d'un code d'erreur de serveur Bilan Retour et de tuer la demande fermera rapidement les ressources utilisées par la connexion. Il existe des solutions prébautilées pour Apache si c'est une option pour vous.


0 commentaires

1
votes

Vérifiez si le conteneur que vous utilisez fournit ce type de déni de service. Si non, alors vous devriez aller avec un filtre.

servletrequest.getRemoteHost () vous donne accès à l'adresse IP du client.


0 commentaires

4
votes

Le projet OWASP-ESAPI-JAVA, hébergé sur code.google.com, a une implémentation d'un filtre d'accélérateur que vous pouvez utiliser "tel quel" ou une inspiration pour votre propre.

Vous pouvez vérifier le code sur le lien suivant:

http://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/main/java/org/owasp/esapi/filters/requestratethrottlefilter.java


0 commentaires