Ограничаване на неуспешни опити с BLOCKED
BLOCKED($, limit, expiration) брои извикванията по IP адрес. Връща true, когато адресът е направил повече от limit извиквания в рамките на срока (по подразбиране: 5 извиквания за 15 минути), а преди това undefined. Извикайте го в началото на чувствителен handler и спрете, когато върне true. За да простите на даден адрес след успешно влизане, извикайте BLOCKED($, -1).
Броячите живеят в паметта на процеса; зад reverse proxy се погрижете истинският адрес на клиента да стига до Total.js, иначе всички споделят един брояч.
exports.install = function() {
ROUTE('POST /login/', login);
};
function login($) {
if (BLOCKED($, 3, '1 minute')) {
$.invalid(429);
return;
}
if ($.body.password === 'correct') {
BLOCKED($, -1);
$.json({ ok: true });
} else
$.invalid(401);
}