ForgeTotal.js 5
nl

Total.js 5

Tokens gekoppeld aan een browser met ENCRYPTREQ() en DECRYPTREQ()

Total.js 5 · total5@0.0.19 securityencryptiontokens Uitgevoerd met Total.js 5

ENCRYPTREQ($, value, key, [strict]) versleutelt een waarde samen met de user agent van het verzoek en geeft een teksttoken terug. DECRYPTREQ($, token, key) leest de waarde terug en geeft niets terug (undefined) als de sleutel fout is, het token leeg is of het verzoek van een andere client komt. Met strict op true is ook het IP-adres van het verzoek onderdeel van het token, zodat het ook niet meer werkt als het adres verandert.

Gebruik het voor waarden die je aan de browser geeft en van dezelfde browser terugverwacht: een kortlevende link, een downloadadres, een formuliertoken. Het vervangt geen sessie: de user agent is makkelijk te kopiëren. Voor tokens die niet van het verzoek afhangen, zie het recept over versleutelen en ontsleutelen.

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