我试图阻止用户使用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
非常感谢你的帮助,
最高
答案 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);