ForgeTotal.js 5
hu

Total.js 5

A sikertelen próbálkozások korlátozása BLOCKED-dal

Total.js 5 · total5@0.0.19 securityrate-limiting Total.js 5-tel lefuttatva

A BLOCKED($, limit, expiration) IP-címenként számolja a hívásokat. true-t ad vissza, ha a cím a lejáraton belül több mint limit hívást végzett (alapértelmezés: 5 hívás 15 perc alatt), előtte pedig undefined-ot. Hívd egy érzékeny handler elején, és állj meg, ha true-t ad. Egy cím megbocsátásához sikeres bejelentkezés után hívd a BLOCKED($, -1)-et.

A számlálók a folyamat memóriájában élnek; reverse proxy mögött gondoskodj róla, hogy a kliens valódi címe elérje a Total.js-t, különben mindenki egy számlálón osztozik.

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);
}