Couchdb 防止DoS和洪水

Couchdb 防止DoS和洪水,couchdb,Couchdb,这需要一点背景,所以请耐心听我说 假设您正在CouchDB上构建一个类似IRC(或Slack)的聊天应用程序。有一个服务器和一些客户端。但是在本例中,服务器和客户端都有一个CouchDB数据库,它们都是双向复制的——客户端到服务器,服务器到其他客户端(中心辐射式)。客户端通过写入本地实例来发送消息,然后本地实例复制到服务器并输出到其他客户端 是否有任何方法(验证功能?)防止恶意客户端插入十亿条记录并将这些更改复制到服务器和其他客户端?或者这是一条规则,您不能让不受信任的客户端对复制到其他任何地方

这需要一点背景,所以请耐心听我说

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

是否有任何方法(验证功能?)防止恶意客户端插入十亿条记录并将这些更改复制到服务器和其他客户端?或者这是一条规则,您不能让不受信任的客户端对复制到其他任何地方的CouchDB实例进行写访问

相关的:


为了更简单地防御洪水,我使用以下工作流程:

  • 只有通过更新函数才允许所有公共写入访问
  • 每个文档插入/更新都会生成一个唯一的散列,它由
    req.peer
    字段(用于IP地址)和一个ISO时间戳组成,我在其中截断了最后一部分。例如,我可能会让2017-11-24T14:14作为唯一字符串的键,这样可以确保每分钟生成一个唯一键
  • 计算每个写请求的哈希值,确保它是唯一的,并且您将确定给定的IP每分钟只允许写一次
  • 该技术适用于来自给定IP集的小洪水。对于更协调的攻击,可能需要一种变体(甚至完全其他的东西)