Tokeny związane z przeglądarką dzięki ENCRYPTREQ() i DECRYPTREQ()
ENCRYPTREQ($, value, key, [strict]) szyfruje wartość razem z user agentem żądania i zwraca token tekstowy. DECRYPTREQ($, token, key) odczytuje wartość z powrotem i nie zwraca nic (undefined), gdy klucz jest błędny, token jest pusty albo żądanie pochodzi od innego klienta. Gdy strict ma wartość true, częścią tokenu jest także adres IP żądania, więc token przestaje działać również wtedy, gdy adres się zmieni.
Używaj go dla wartości, które przekazujesz przeglądarce i oczekujesz z powrotem od tej samej przeglądarki: krótkotrwały link, adres pobierania, token formularza. Nie zastępuje sesji: user agent łatwo skopiować. Dla tokenów niezależnych od żądania zobacz przepis o szyfrowaniu i odszyfrowywaniu.
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 });
}