ForgeTotal.js 5
el

Total.js 5

Περιορισμός αποτυχημένων προσπαθειών με BLOCKED

Total.js 5 · total5@0.0.19 securityrate-limiting Εκτελέστηκε με το Total.js 5

Το BLOCKED($, limit, expiration) μετρά κλήσεις ανά διεύθυνση IP. Επιστρέφει true μόλις η διεύθυνση κάνει περισσότερες από limit κλήσεις μέσα στη λήξη (προεπιλογή: 5 κλήσεις σε 15 λεπτά) και undefined πριν από αυτό. Καλέστε το στην αρχή ενός ευαίσθητου handler και σταματήστε όταν επιστρέψει true. Για να συγχωρήσετε μια διεύθυνση μετά από επιτυχή σύνδεση καλέστε BLOCKED($, -1).

Οι μετρητές ζουν στη μνήμη της διεργασίας· πίσω από reverse proxy φροντίστε η πραγματική διεύθυνση του client να φτάνει στο Total.js, αλλιώς όλοι μοιράζονται έναν μετρητή.

controllers/login.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);
}