【问题标题】:Preventing DoS and flooding防止 DoS 和洪水
【发布时间】:2017-11-24 21:48:58
【问题描述】:

这需要一点上下文,所以请耐心等待。

假设您正在 CouchDB 上构建一个聊天应用程序,其功能类似于 IRC(或 Slack)。有一个服务器和一些客户端。但是在这种情况下,服务器和客户端都有一个 CouchDB 数据库,并且它们都相互双向复制——客户端到服务器,服务器到其他客户端(中心辐射型)。客户端通过写入本地实例来发送消息,然后复制到服务器并输出到其他客户端。

是否有任何方法(验证功能?)来防止恶意客户端插入十亿条记录并将这些更改复制到服务器和其他客户端?还是您不能授予不受信任的客户端对在其他任何地方复制的 CouchDB 实例的写入权限?

相关:

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    对于一个相当简单的洪水防御,我使用以下工作流程:

    1. 只有通过更新函数才允许所有公共写访问
    2. 每个文档插入/更新都会生成一个唯一的哈希,由req.peer 字段(用于IP 地址)和一个ISO 时间戳组成,我在其中截断了最后一部分。例如,我可能有 2017-11-24T14:14 作为它们键唯一字符串,这样可以确保每分钟生成一个唯一键
    3. 计算每个写入请求的哈希值,确保它是唯一的,并且您可以确定给定的 IP 每分钟只允许写入一次。

    这种技术适用于来自给定 IP 集的小型洪水。对于更协调的攻击,可能需要一个变体(甚至完全是其他东西)。

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多