0

我试图阻止用户使用 Meteor 包过于频繁地调用 Meteor 方法ddp-rate-limiter(例如,为了防止垃圾邮件或 DOS 攻击),但我无法让它工作。

有人有想法吗?

服务器/ddpRateLimiter.js:

Meteor.methods({
  dosAttack: function() {console.log("dos");}
});

var preventDosAttack= {
  userId: function() {return true;},
  type: 'method',
  method: 'dosAttack'
}

DDPRateLimiter.addRule(preventDosAttack, 5, 1000);

使用此代码,我仍然可以根据需要经常从客户端控制台运行该方法。(用 for 循环测试 100 次)

你可以在这里找到完整的源代码:opensource project

而这个特定的提交在这里:commit

非常感谢您的帮助,

最大限度

4

2 回答 2

2

我的错误很简单:不是'method': 'dosAttack'但是'name': 'dosAttack'。似乎MeteorDoc DDPRateLimiter文档中的示例也犯了同样的错误。我在流星 GitHub 页面上创建了一个问题

于 2015-11-29T13:20:34.127 回答
0

速率限制现在作为供应商支持的 Meteor 包提供。我最近用它来创建Meteor Candy,这是 Meteor 的管理面板。这就是我的做法。

首先,添加包:

meteor add ddp-rate-limiter.

二、定义方法:

Meteor.methods({
    myFancyMethod: function () {
        return true;
    }
})

最后,为其定义限速规则:

import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';

var requestLimit = 5;
var requestTimeout = 5000;

DDPRateLimiter.addRule({
    type: "method",
    name: "myFancyMethod",
}, requestLimit, requestTimeout);
于 2017-09-29T13:36:29.667 回答