Мне было интересно, можно ли реализовать какую-то грубую защиту от вторжения 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.
Любое понимание очень ценится!
Вполне вероятно, что если кто-то Spams на сайте они не используют браузер для этого (т.е. они полностью обходят JavaScript). И в любом случае, если кто-то копирует текст в поле ввода, ваш метод либо ломается, либо думает, что он пытается затопить сайт. – JJJ
@ Juhana: Но я получаю события с сервера (которые я не могу контролировать). – VariousThings
Тогда я действительно не понимаю, что вы пытаетесь сделать, извините. Если события происходят с сервера, что такое событие keydown, которое пытается захватить? – JJJ