JWT vs Sessione: Quale Autenticazione Scegliere

Disconnetti un utente da un’app basata su sessione e il server lo dimentica alla richiesta successiva. Disconnettilo da un’app basata su JWT e, a meno che tu non abbia costruito un meccanismo apposito, il token che ha in mano resta valido finché non scade. Questa è la vera decisione dietro “JWT vs sessione”. Il resto ne consegue. Cosa memorizza davvero una sessione Una sessione mantiene lo stato dell’utente sul server e al browser passa solo una chiave di lookup. ...

16 ottobre 2026 Â· 7 minuti Â· 1474 parole Â· SpaghettiCoder

LocalStorage, SessionStorage o Cookie: Cosa Usare

Un endpoint di login restituisce un JWT, e hai tre posti dove metterlo: un cookie, localStorage o sessionStorage. Scegli quello sbagliato e succede una di due cose: un bug XSS si porta via il token, oppure il token non arriva mai alla tua API. Tutti e tre salvano stringhe nel browser. Cambiano su chi può leggerle, quanto durano e se il server le vede o no. Che differenza c’è tra localStorage, sessionStorage e cookie localStorage e sessionStorage sono la stessa API, l’interfaccia Storage: setItem, getItem, removeItem, clear, chiavi e valori sempre stringa. La differenza è la durata. localStorage sopravvive alla chiusura del browser e al riavvio della macchina, e resta finché qualcosa non lo svuota. Safari è l’eccezione: con la tracking prevention attiva, elimina lo storage scritto da script per un sito con cui l’utente non ha interagito da sette giorni. sessionStorage appartiene a una singola tab e muore quando quella tab si chiude. Digiti lo stesso URL in una seconda tab e ottieni un sessionStorage nuovo e vuoto; solo “Duplica tab” lo copia. ...

5 ottobre 2026 Â· 8 minuti Â· 1495 parole Â· SpaghettiCoder

Cos'è CORS e Come Risolvere gli Errori CORS

Il frontend gira su http://localhost:5173, l’API su http://localhost:4000, e la fetch che funzionava perfettamente in Postman fallisce nel browser con un muro di testo rosso: Access to fetch at 'http://localhost:4000/api/users' from origin 'http://localhost:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Il server potrebbe aver gestito la richiesta e restituito un 200. Il browser ha semplicemente rifiutato di consegnare la risposta al tuo JavaScript. ...

26 settembre 2026 Â· 8 minuti Â· 1613 parole Â· SpaghettiCoder

Tunnel SSH: Port Forwarding Locale, Remoto e Dinamico

Come raggiungere un database che ascolta solo su localhost? Un’istanza Postgres su un server remoto è collegata a 127.0.0.1 di proposito. Nessuno sulla rete può raggiungerla, solo i processi in esecuzione su quella stessa macchina. Il tuo laptop non è quella macchina, quindi psql -h remote-server -p 5432 fallisce prima ancora di arrivare all’autenticazione. Aprire la porta al mondo vanifica il motivo per cui era stata collegata al loopback. Quello che ti serve è prendere in prestito, per qualche minuto e dal tuo terminale, la vista che la macchina remota ha di 127.0.0.1. Quando fai login, SSH ha già una connessione cifrata e autenticata aperta tra le due macchine. Il port forwarding riutilizza quella connessione per trasportare traffico diverso dalla tua shell. ...

24 settembre 2026 Â· 7 minuti Â· 1454 parole Â· SpaghettiCoder

Cos'è TLS e Come Funziona la Crittografia HTTPS

Cosa protegge davvero TLS su una connessione HTTPS Carica una pagina in http:// puro su una rete che non controlli, un aeroporto o il router di un bar, e tutto quello che invii viaggia come testo leggibile. Il percorso dell’URL, i cookie, i campi del form, la password in un POST di login: chiunque su quella rete con uno sniffer di pacchetti li legge mentre passano. TLS, Transport Layer Security, è il protocollo che blocca questo scenario. Si inserisce tra TCP e il protocollo applicativo, quindi quando HTTP inizia a parlare la connessione è già cifrata e legata a un’identità server verificata. HTTPS è semplicemente HTTP eseguito su quella connessione invece che su una in chiaro. ...

20 settembre 2026 Â· 10 minuti Â· 2070 parole Â· SpaghettiCoder

Variabili d'Ambiente e Secrets in Docker

Dove finiscono le variabili d’ambiente di un container Avvia un container con -e DB_PASSWORD=hunter2 ed esegui docker inspect sul container appena avviato: 1 2 docker run -d --name api -e DB_PASSWORD=hunter2 nginx:alpine docker inspect --format '{{json .Config.Env}}' api 1 ["DB_PASSWORD=hunter2","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"] La password resta lì in chiaro, leggibile da chiunque abbia accesso al socket Docker, da docker exec api env e da qualsiasi processo in esecuzione dentro il container. Non è un bug: è esattamente a cosa servono le variabili d’ambiente. Il problema è usarle per valori che non dovrebbero mai essere così visibili. ...

9 settembre 2026 Â· 6 minuti Â· 1214 parole Â· SpaghettiCoder