编程语言
首页 > 编程语言> > JavaScript防垃圾邮件保护?

JavaScript防垃圾邮件保护?

作者:互联网

我想知道是否有可能实现某种原始的JavaScript反洪保护.
我的代码通过AJAX接收来自服务器的事件,但是有时这些事件可能非常频繁(它们不受我的管辖).

我试图想出一种方法来解决这个问题,并且我写了一个小脚本:http://jsfiddle.net/Ry5k9/

var puts = {};

function receiverFunction(id, text) {
       if ( !puts[id] ) {
           puts = {};
           puts[id] = {};
       }

       puts[id].start = puts[id].start || new Date();
       var count = puts[id].count = puts[id].count + 1 || 0;
       var time = (new Date() - puts[id].start) * 0.001;

       $("text").set("text", (count / time.toFixed()).toString() + " lines/second");

       doSomethingWithTextIfNotSpam(text);
   }
};

我认为可以证明对这种攻击有效,但是我想知道它是否可以改进或重写?

到目前为止,我认为每秒超过3或2.5行的所有内容似乎都是垃圾邮件,但是随着时间的推移(因为已设置开始标记…很好…开始时),犯罪者可能只是闲置了一段时间,然后然后开始洪水,实际上每分钟从不超过1条线.

另外,我想补充一点,我使用Mootools和Lo-Dash库(也许它们提供了一些有趣的方法),但是如果可以使用本机JS完成,那将是更好的选择.

非常感谢任何见识!

解决方法:

如果您担心某个特定javascript函数的触发频率,则可以将该函数设置为debounce.

在您的示例中,我想应该是这样的:

onSuccess: function(){ _.debounce(someOtherFunction, timeOut)}; 

超时是您要调用someOtherFunction的最大频率.

标签:spam-prevention,javascript
来源: https://codeday.me/bug/20191123/2066459.html