ForgeTotal.js 5
es

Total.js 5

Tokens ligados a un navegador con ENCRYPTREQ() y DECRYPTREQ()

Total.js 5 · total5@0.0.19 securityencryptiontokens Ejecutada con Total.js 5

ENCRYPTREQ($, value, key, [strict]) cifra un valor junto con el user agent de la petición y devuelve un token de texto. DECRYPTREQ($, token, key) lee el valor de vuelta y no devuelve nada (undefined) cuando la clave es incorrecta, el token está vacío o la petición viene de un cliente distinto. Con strict en true la dirección IP de la petición también forma parte del token, de modo que además deja de funcionar si la dirección cambia.

Úsalo para valores que entregas al navegador y esperas recibir del mismo navegador: un enlace de corta duración, una dirección de descarga, un token de formulario. No sustituye a una sesión: el user agent es fácil de copiar. Para tokens que no dependen de la petición consulta la receta de cifrar y descifrar.

controllers/tokens.js
exports.install = function() {
	ROUTE('GET /issue/', issue);
	ROUTE('GET /read/', read);
	ROUTE('GET /read-wrong-key/', wrongkey);
};

function issue($) {
	$.json({ token: ENCRYPTREQ($, { id: 5 }, 'my-secret'), strict: ENCRYPTREQ($, 'only-here', 'my-secret', true) });
}

function read($) {
	$.json({ value: DECRYPTREQ($, $.query.token, 'my-secret') || null });
}

function wrongkey($) {
	$.json({ value: DECRYPTREQ($, $.query.token, 'another-secret') || null });
}