Protejează formularele și cererile cu token-uri CSRF
Un atac CSRF face ca browserul unui utilizator autentificat să trimită o cerere pe care nu a vrut-o niciodată. Apărarea este un token pe care pagina îl primește de la serverul tău și care trebuie să se întoarcă cu fiecare cerere ce modifică date. Total.js creează și verifică tokenul pentru tine, dar numai dacă secret_csrf este setat în fișierul config (fără el verificarea trece întotdeauna).
$.csrf() returnează un token (iar @{csrf} îl afișează într-un view). Este o valoare criptată legată de adresa IP și de user agent-ul clientului, care expiră după timpul din $csrfexpiration (30 de minute în mod implicit). DEF.onCSRFcheck($) verifică tokenul întors, citit din antetul x-csrf-token sau din parametrul csrf al query string-ului, și returnează true sau false. Pentru rutele obișnuite îl apelezi tu, cel mai comod dintr-un middleware pe care îl adaugi cu #csrf la fiecare rută care modifică date. Rutele WebSocket cu flagul @csrf sunt verificate automat.
secret_csrf : change-this-secret-in-productionMIDDLEWARE('csrf', function($, next) {
if (DEF.onCSRFcheck($))
next();
else
$.invalid(403);
});exports.install = function() {
ROUTE('GET /form/', form);
ROUTE('POST /transfer/ @json #csrf', transfer);
};
function form($) {
$.json({ csrf: $.csrf() });
}
function transfer($) {
$.json({ ok: true, amount: $.body.amount });
}