我想知道是否可以实施某种粗略的JavaScript防洪保护。 我的代码通过AJAX接收来自服务器的事件,但有时这些事件可能相当频繁(它们不受我控制)。JavaScript反泛滥垃圾邮件保护?
我试图拿出打击这种的方法,我已经写了一个小脚本: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)。在任何情况下,如果有人将文本复制粘贴到输入字段,您的方法可能会崩溃或认为他们正在尝试洪泛网站。 – JJJ
@Juhana:但我从服务器接收事件(我无法控制)。 – VariousThings
然后我真的不明白你要做什么,对不起。如果事件来自服务器,那么keydown事件试图捕获什么? – JJJ