Περιορισμός αποτυχημένων προσπαθειών με BLOCKED
Το BLOCKED($, limit, expiration) μετρά κλήσεις ανά διεύθυνση IP. Επιστρέφει true μόλις η διεύθυνση κάνει περισσότερες από limit κλήσεις μέσα στη λήξη (προεπιλογή: 5 κλήσεις σε 15 λεπτά) και undefined πριν από αυτό. Καλέστε το στην αρχή ενός ευαίσθητου handler και σταματήστε όταν επιστρέψει true. Για να συγχωρήσετε μια διεύθυνση μετά από επιτυχή σύνδεση καλέστε BLOCKED($, -1).
Οι μετρητές ζουν στη μνήμη της διεργασίας· πίσω από reverse proxy φροντίστε η πραγματική διεύθυνση του client να φτάνει στο 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);
}