我遇到了一个Web服务的问题,用户试图通过循环随机ID来猜测应用程序ID.
坏请求来自随机IP,所以我不能只禁止他们的IP(除非我动态地做,但我还没有考虑过).
目前,当我检测到已经进行了10次不良应用ID尝试的客户端时,我将它们放在我的应用中的阻止列表中,并拒绝当天该IP的进一步请求.
我想尽量减少我的服务器需要做的工作量,因为坏客户端将继续发送1000个请求,即使它们被拒绝.我知道有动态防火墙解决方案,但现在想要在我的应用程序中轻松实现.目前我正在睡觉5秒以减少呼叫,但我想要做的只是不向客户端发送响应,因此它必须超时.
任何人都知道如何在JAX-RS中用Java做到这一点?
我的服务就像,
@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) {
...
}
Run Code Online (Sandbox Code Playgroud)
这可能更适合Serverfault,但许多只来这里的网络开发人员可能会从这个问题的可能答案中受益.
问题是:您如何有效地保护自己免受针对您的网络服务器的拒绝服务攻击?
读完这篇文章后我问自己这个问题
对于那些不熟悉的人,这是我记忆中的事情:DoS攻击将通过反复向您的服务器发送虚假标头来尝试占用您的所有连接.
通过这样做,您的服务器将达到可能的同步连接的限制,因此,普通用户将无法再访问您的站点.
维基百科提供了更多信息:http://en.wikipedia.org/wiki/Denial_of_service