ForgeTotal.js 5
hu

Total.js 5

Űrlapok és kérések védelme CSRF-tokenekkel

Total.js 5 · total5@0.0.19 securitycsrfmiddleware Total.js 5-tel lefuttatva

A CSRF-támadás arra készteti a bejelentkezett felhasználó böngészőjét, hogy olyan kérést küldjön, amit sosem akart. A védekezés egy token, amelyet az oldal a szervertől kap, és amelynek minden adatot módosító kéréssel vissza kell érkeznie. A Total.js létrehozza és ellenőrzi a tokent helyetted, de csak akkor, ha a config fájlban be van állítva a secret_csrf (nélküle az ellenőrzés mindig sikeres).

A $.csrf() egy tokent ad vissza (a @{csrf} pedig kiírja egy view-ban). Ez egy titkosított érték, amely a kliens IP-címéhez és user agentjéhez kötött, és a $csrfexpiration ideje után lejár (alapértelmezés szerint 30 perc). A DEF.onCSRFcheck($) ellenőrzi a visszaérkezett tokent, amelyet az x-csrf-token fejlécből vagy a csrf lekérdezési paraméterből olvas, és true vagy false értéket ad vissza. A hétköznapi útvonalaknál te hívod meg, a legkényelmesebben egy middleware-ből, amelyet a #csrf jellel adsz minden adatot módosító útvonalhoz. A @csrf jelzőjű WebSocket-útvonalakat automatikusan ellenőrzi.

config
secret_csrf : change-this-secret-in-production
definitions/csrf.js
MIDDLEWARE('csrf', function($, next) {
	if (DEF.onCSRFcheck($))
		next();
	else
		$.invalid(403);
});
controllers/csrf.js
exports.install = function() {
	ROUTE('GET /form/', form);
	ROUTE('POST /transfer/ @json #csrf', transfer);
};

function form($) {
	$.json({ csrf: $.csrf() });
}

function transfer($) {
	$.json({ ok: true, amount: $.body.amount });
}