У меня возникла проблема с веб-службой, когда пользователи пытаются угадать идентификаторы приложений, перебирая случайные идентификаторы.
Плохие запросы поступают из случайных IP-адресов, поэтому я не могу просто запретить их IP-адрес (если только я не делаю это динамически, но я пока не занимаюсь этим).
В настоящее время, когда я обнаруживаю клиента, который совершил 10 неудачных попыток ID приложения, я помещал их в список блоков в своем приложении и отклонял дальнейшие запросы от этого IP-адреса в течение дня.
Я хочу свести к минимуму объем работы, которую должен выполнить мой сервер, поскольку плохой клиент будет продолжать отправлять 1000 запросов, даже если они отклоняются. Я знаю, что есть динамические решения для брандмауэра, но сейчас я хочу что-то легко реализовать в своем приложении. В настоящее время я спал в течение 5 секунд, чтобы уменьшить количество вызовов, но то, что я хочу сделать, - это просто не отправлять ответ клиенту, поэтому он должен тайм-аут.
Кто-нибудь знает, как это сделать на Java, в JAX-RS?
Мой сервис похож,
@Path("/api")
public class MyServer {
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path("/my-request")
public String myRequest(String type,
@Context HttpServletRequest requestContext,
@Context HttpServletResponse response) {
...
}