Google app engine 如何在Google App Engine中阻止超过100个dos尝试子网?

Google app engine 如何在Google App Engine中阻止超过100个dos尝试子网?,google-app-engine,ddos,Google App Engine,Ddos,我的GAE应用程序有很多dos尝试,我无法将它们减少/合并到少于100个子网中,以满足限制。有没有办法阻止100多个子网 如果谷歌应用引擎团队有机会读到这篇文章,我想说我真的很喜欢GAE,但现在阻止IP的方式效率很低。应该有一些功能可以帮助应用程序所有者在请求速率或其他更智能的方面动态阻止IP。使用和创建自己的动态速率限制非常简单,您可以计算每个servlet中每个IP地址的请求数。这些计数器可以存储在中,并根据您自己的规则用于快速使请求失败。这些可以是完全特定于应用程序的 @Service c

我的GAE应用程序有很多dos尝试,我无法将它们减少/合并到少于100个子网中,以满足限制。有没有办法阻止100多个子网


如果谷歌应用引擎团队有机会读到这篇文章,我想说我真的很喜欢GAE,但现在阻止IP的方式效率很低。应该有一些功能可以帮助应用程序所有者在请求速率或其他更智能的方面动态阻止IP。

使用和创建自己的动态速率限制非常简单,您可以计算每个servlet中每个IP地址的请求数。这些计数器可以存储在中,并根据您自己的规则用于快速使请求失败。这些可以是完全特定于应用程序的

@Service
class Servlet {
    @Get
    @At("/your/servlet")
    @IpRateLimited
    public Reply<?> foo(Request request) {
        return Reply.with("Hello World");
    }
}

class IpBasedRateLimiter implements MethodInterceptor {
    public Object invoke(final MethodInvocation invocation) throws Throwable {
         // Inspect the request argument on the invoked method to get the IP address
         if (isDenialOfServiceAttempt(invocation)) {
             // Fail the request
             return Reply.saying().error();
         } else {
             // Continue executing the original request
             return invocation.proceed();
         }
    }
}

...
bindInterceptor(Matchers.any(), Matchers.annotatedWith(IpRateLimited.class), 
    new IpBasedRateLimiter());
...
@服务
类Servlet{
@得到
@在(“/your/servlet”)
@知识产权有限公司
公共回复foo(请求){
返回回复。带有(“你好世界”);
}
}
类IpBasedRateLimiter实现MethodInterceptor{
公共对象调用(最终MethodInvocation调用)抛出可丢弃的{
//检查被调用方法上的请求参数以获取IP地址
if(isDenialOfServiceAttempt(调用)){
//请求失败
返回Reply.saying().error();
}否则{
//继续执行原始请求
返回调用。继续();
}
}
}
...
bindInterceptor(Matchers.any()、Matchers.annotatedWith(IpRateLimited.class)),
新的IpBasedRateLimiter());
...
您仍然需要支付用于检测拒绝服务尝试的CPU时间。但是,只要您的算法具有足够的攻击性,这些成本将是最低的,例如,获取一个memcache并检查一个条件。在GAE提供自己的动态DOS保护之前,我会这么做。

FWIW,新发布的版本似乎没有多少规则限制。