【问题标题】:How to prevent hackers from scraping our database? [duplicate]如何防止黑客窃取我们的数据库? [复制]
【发布时间】:2010-10-28 08:07:00
【问题描述】:

可能重复:
How do you stop scripters from slamming your website hundreds of times a second?

我正在 RubyOnRails 中构建一个基于大量数据的 Web 应用程序。该应用程序提供强大的导航和数据交叉,以及用于添加更多数据的社区模型。 在这方面,可以将其与 StackOverflow.com 进行比较:一大堆数据,以相当简单的方式结构化。

我打算在 CreativeCommons 许可下提供内容,但如果网站“成功”,我需要阻止模仿者。我最大的恐惧是屏幕抓取脚本,不仅会窃取原始数据,还会在我的服务器上引发巨大的使用高峰。

我想知道 RubyOnRails 是否提供任何方式来限制(显然是自动化的)请求,例如为了普通用户的利益,减少他们的响应时间。也许这需要 Apache 或 Phusion Passenger 设置?

编辑:我的目标不是识别用户类型,而是减少对过度活跃用户的响应,例如最大化每单位时间每个 IP 地址处理的请求数 (?)

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您可能还想考虑使用一些 Rack 中间件来进行速率限制,例如用于进行 API 限制的 this recent article(例如您在 Twitter 上想要的或类似的东西)。

    【讨论】:

    • 这种情况让我追问另一个问题:我不了解 Rack。我可以在 Ruby On Rails 中使用速率限制吗,可以在 Rack 之间使用吗?
    • Felix,我不确定我是否完全理解这个问题,但是......至少部分取决于你的堆栈是什么以及你的 Rails 版本是什么。我认为如果您使用的是 Rails 2.2(也许是 2.1?),那么您已设置/兼容 Rack。然后,您需要使用基于机架的堆栈,并且有多种选择。乘客,或瘦,或什么不是。但实际上,关键是 Rack 是您的 Web 服务器堆栈的一部分,而速率限制实现的美妙之处在于它们基本上无需您接触您的应用程序就可以做到 - 这一切都在 Rack 中间件层。
    【解决方案2】:

    您可以向“过度活跃的用户”提供验证码,就像您编辑太快时 SO 所做的那样。这应该会有效地阻止自动爬虫,比如抓取。

    【讨论】:

    • 他们不会在收集数据的频率上设置适当的延迟吗?
    • @nevets1219 好吧,你不能完全阻止他们,只能放慢他们的速度或让他们更加努力地工作。 OP 已经承认了这一点。
    【解决方案3】:

    我的建议是限制您网站的任何简单迭代导航,这是我看到的收获程序工作的主要方式。用作 GET 变量的 ID 号码的简单加密将使剥离您的信息更加困难。你只能试着让你的信息变得繁琐。您将无法完全阻止它。

    【讨论】:

    • 这不是解决节流问题的办法,但确实是个聪明的把戏!谢谢!
    • 很抱歉我没有回答您提出的问题!我对 RoR 太愚蠢了,甚至无法提供程序化建议。
    【解决方案4】:

    我相信你所能做的就是让用户跳起来。最终,没有万无一失的方法可以将普通用户与机器人区分开来。

    【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2015-10-08
    • 1970-01-01
    • 2018-05-21
    • 2011-02-10
    • 1970-01-01
    • 2018-04-22
    • 2015-09-12
    • 2011-02-18
    相关资源
    最近更新 更多