如果请求如下所示,我的服务器将受到各种各样的攻击:
Started GET "/key/values"
ActionController::RoutingError (No route matches [GET] "/key/values")
Started GET "/loaded"
ActionController::RoutingError (No route matches [GET] "/loaded")
Started GET "/top/left"
ActionController::RoutingError (No route matches [GET] "/top/left")我应该如何防御这种攻击呢?这些请求会不会减缓我的网站,即使他们没有得到回应?
发布于 2015-07-28 07:34:10
如何抵御恶意的GET请求?
这些请求看起来并不是真正的恶意。至少根据您的描述,它们不会造成任何伤害,即没有不必要的代码执行、SQL注入或类似的攻击。他们只需要一些资源来处理。您看到的是web服务器的每个操作员在日志文件中都能看到的内容:许多请求与服务器上的任何内容不匹配,因为有人在扫描互联网,寻找易受攻击的系统。此外,这些请求也可能是由您的站点的更改引起的,以前有效的URL现在是无效的,但是机器人仍然记得旧的URL,并检查这些URL的更新。
如果这些请求困扰您,那么您可以将应用程序更改为忽略此类请求(而不是将其记录为错误),也可以通过服务器/反向代理在应用程序前面过滤这些请求。
虽然建议的web应用程序防火墙(WAF)可以过滤这些请求,但我认为安装一个防火墙来过滤这些无害的请求是过分的。但是正确地使用(即适应应用程序,而不是像通常情况那样仅仅安装和遗忘),它可以是一个有用的保护层。虽然建议的fail2ban也可以提供帮助,但只有当这些请求仅来自少数几个IP地址时才会有用,而这通常不是这样的。此外,依赖fail2ban可以锁定有效用户,因为到站点的无效链接可以包含在邮件或其他网站中,因此请求的初始IP地址不是攻击者,而是在访问该链接时被欺骗的无辜用户。但是fail2ban只看到原始IP和错误消息,然后锁定无辜用户。
您应该做的是确保您的应用程序不会受到攻击,OWASP是学习保护web应用程序的一个很好的资源。如果您的应用程序比它更安全,那么处理这类请求就没有问题。但是,为了限制无效请求的资源使用,您应该确保在应用程序中尽早检测和拒绝这些请求,也就是说,如果无效请求也会触发对数据库的昂贵查询,那将是很糟糕的。
https://security.stackexchange.com/questions/95119
复制相似问题