ForgeTotal.js 5
de

Total.js 5

An einen Browser gebundene Tokens mit ENCRYPTREQ() und DECRYPTREQ()

Total.js 5 · total5@0.0.19 securityencryptiontokens Mit Total.js 5 ausgeführt

ENCRYPTREQ($, value, key, [strict]) verschlüsselt einen Wert zusammen mit dem User-Agent der Anfrage und gibt ein Text-Token zurück. DECRYPTREQ($, token, key) liest den Wert wieder aus und gibt nichts zurück (undefined), wenn der Schlüssel falsch ist, das Token leer ist oder die Anfrage von einem anderen Client kommt. Ist strict auf true gesetzt, gehört auch die IP-Adresse der Anfrage zum Token, sodass es zusätzlich ungültig wird, wenn sich die Adresse ändert.

Verwende es für Werte, die du dem Browser übergibst und vom selben Browser zurückerwartest: ein kurzlebiger Link, eine Download-Adresse, ein Formular-Token. Es ersetzt keine Sitzung: Der User-Agent lässt sich leicht kopieren. Für Tokens, die nicht von der Anfrage abhängen, siehe das Rezept zum Ver- und Entschlüsseln.

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