ForgeTotal.js 5
fr

Total.js 5

Jetons liés à un navigateur avec ENCRYPTREQ() et DECRYPTREQ()

Total.js 5 · total5@0.0.19 securityencryptiontokens Exécutée avec Total.js 5

ENCRYPTREQ($, value, key, [strict]) chiffre une valeur avec le user agent de la requête et renvoie un jeton sous forme de texte. DECRYPTREQ($, token, key) relit la valeur et ne renvoie rien (undefined) quand la clé est fausse, que le jeton est vide ou que la requête vient d'un autre client. Avec strict à true, l'adresse IP de la requête fait aussi partie du jeton, qui cesse donc de fonctionner aussi quand l'adresse change.

Utilisez-le pour des valeurs que vous remettez au navigateur et que vous attendez de retour du même navigateur : un lien de courte durée, une adresse de téléchargement, un jeton de formulaire. Ce n'est pas un remplacement d'une session : le user agent se copie facilement. Pour les jetons qui ne dépendent pas de la requête, voir la recette sur le chiffrement et le déchiffrement.

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