共享主机和简单的DoS攻击

时间:2014-03-20 23:07:36

标签: c# shared-hosting ddos

我的网站托管在共享托管上,如果您花费25%的CPU超过90秒托管公司会自动禁用应用程序池。我想知道这段代码是否可以从简单的DoS攻击中卸载服务器

void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext context = base.Context;
    string ip = context.Request.UserHostAddress;

    int activeRequests = (int)(context.Cache[ip] ?? 0);

    activeRequests++;

    if (activeRequests == 1)
    {
        context.Cache.Add(ip, activeRequests, null, DateTime.Now.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null);
    }

    if (activeRequests > 10)
    {
        log4net.Config.XmlConfigurator.Configure();
        log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        log.WarnFormat("Blocked IP: {0}, ActiveRequests: {1}", ip, activeRequests);

        Response.Clear();
        Response.Redirect("~/Error500.html");
    }
}

void Application_EndRequest(object sender, EventArgs e)
{
    HttpContext context = base.Context;
    string ip = context.Request.UserHostAddress;

    int activeRequests = (int)(context.Cache[ip] ?? 0);
    activeRequests--;
}

我的意思是简单的DoS攻击。

for (int i = 0; i < 100000; i++)
{
    WebClient client = new WebClient();
    client.DownloadString("http://example.com");
}

1 个答案:

答案 0 :(得分:1)

不,该代码不会有帮助。 此外,对于代理服务器后面的用户来说可能确实存在问题:HTTP请求将由代理服务器发出,因此客户端IP对于其后面的每台PC都是相同的。

DoS预防是在应用程序代码之外的基础架构上完成的。 有关IIS的示例,请参阅此文章:http://m.windowsitpro.com/windows/q-does-microsoft-iis-70-include-feature-protect-iis-web-server-denial-service-dos-attacks-do

因此,简而言之,DoS预防通常由托管服务提供商完成。