ForgeTotal.js 5
pt

Total.js 5

Tokens ligados a um navegador com ENCRYPTREQ() e DECRYPTREQ()

Total.js 5 · total5@0.0.19 securityencryptiontokens Executada com o Total.js 5

ENCRYPTREQ($, value, key, [strict]) cifra um valor juntamente com o user agent do pedido e devolve um token de texto. DECRYPTREQ($, token, key) lê o valor de volta e não devolve nada (undefined) quando a chave está errada, o token está vazio ou o pedido vem de um cliente diferente. Com strict definido como true, o endereço IP do pedido também faz parte do token, pelo que deixa de funcionar também quando o endereço muda.

Use-o para valores que entrega ao navegador e espera receber de volta do mesmo navegador: uma ligação de curta duração, um endereço de descarga, um token de formulário. Não substitui uma sessão: o user agent é fácil de copiar. Para tokens que não dependem do pedido, veja a receita sobre cifrar e decifrar.

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