我想知道是否可以實施某種粗略的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