Meteor:使用ddp-rate-limiter软件包限制DDP连接

时间:2015-11-27 14:55:35

标签: javascript security meteor ddp

我试图阻止用户使用Meteor包ddp-rate-limiter过于频繁地调用Meteor方法(例如,为了防止垃圾邮件或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

非常感谢你的帮助,

最高

2 个答案:

答案 0 :(得分:2)

我的错误很简单:它不是<resources> <resource> <filtering>true</filtering> <directory>src/test/resources</directory> <includes> <include>**/*.properties</include> </includes> <excludes> <exclude>**/*local.properties</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> 而是'method': 'dosAttack'。似乎文档中的示例MeteorDoc DDPRateLimiter也犯了同样的错误。我在流星GitHub页面上创建了一个issue

答案 1 :(得分: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);