如何让客户机等待 Java JAX-RS 服务来防止 DOS
我在使用 Web 服务时遇到问题,用户试图通过循环访问随机 ID 来猜测应用程序 ID。
不良请求来自随机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) {
...
}