如何阻止我的 Rails 应用程序被机器人攻击?

use*_*270 5 performance ruby-on-rails

我什至不确定我使用的术语是否正确,无论这是否真的是机器人。我不想使用“垃圾邮件”这个词,因为我没有创建/发送垃圾邮件的评论或帖子。它看起来更像是有什么东西向我的域发出相同的重复请求,这让我认为它是某种机器人。

我已经向“公众”开放了我的第一个 Rails 应用程序,这实际上是一小群用户,目前不到 50 人。那是上周五的事了。我今天开始遇到性能问题,所以我查看了日志,发现了大量这样的 RoutingErrors

ActionController::RoutingError (No route matches "/portalApp/APF/pages/business/util/whichServer.jsp" with {:method=>:get}):
Run Code Online (Sandbox Code Playgroud)

他们正在填充日志,我假设这是导致速度减慢的原因。请注意末尾的 .jsp,这是一个 Rails 应用程序,因此我的应用程序中没有像这样的远程 URL。我的意思是,我什至没有 /portalApp,所以我不知道它来自哪里。

这是在 Dreamhost 托管的,我与他们的一位支持人员聊天,他推荐了几个详细介绍使用 htaccess 来阻止事物的网站。但看起来您需要知道请求来自的 IP 或域,但我不知道。

我怎样才能阻止这个?如何从请求中找到 IP 或域?还有其他建议吗?


跟进信息:

查看访问日志后,看起来它不是机器人。也许我没有正确读取日志,但有来自同一 IP 的有效 url 请求(从我的 Flex 应用程序内生成)。所以现在我想知道是否是某种插件生成请求,但我真的不知道。现在我想知道是否可以根据模式阻止某个 url 请求,但我认为这是一个单独的问题。

Ser*_*gio 0

这些页面似乎提供了一些好的建议: Here

关于用户代理阻止的部分可能是您可以考虑实施的内容。无论如何,您是否可以从日志中获取机器人的用户代理?如果是这样,请查找可能标识机器人的用户代理的独特方面,并将以下内容添加到 .htaccess 中替换相关位

BrowserMatchNoCase SpammerRobot bad_bot
Order Deny,Allow
Deny from env=bad_bot
Run Code Online (Sandbox Code Playgroud)

该链接的详细信息更详细,当然,如果您无法从日志中获取用户代理,那么这对您来说毫无用处!