Il Cross Site Request Forgery (CSRF) è un tipo di attacco informatico che induce l’utente a eseguire azioni non intese su un’applicazione web in cui è autenticato. Django, un framework di sviluppo web Python, fornisce protezioni incorporate contro gli attacchi CSRF.
In un attacco CSRF, un malevolo sito web fa uso di una richiesta HTTP (GET o POST) di un utente autenticato per eseguire azioni non autorizzate. Un esempio tipico potrebbe essere un attacco sul tuo account bancario online. Se la tua banca non dispone di sufficienti protezioni, un attacco CSRF potrebbe forzare un’operazione di trasferimento di fondi mentre sei loggato.
La protezione CSRF in Django funziona attraverso l’uso di token. Quando un modulo è inviato in Django, un token CSRF è incluso. Django verifica poi questo token quando la richiesta POST arriva, garantendo che la richiesta provenga effettivamente da un modulo inviato dal sito stesso e non da un sito malevolo.
Per utilizzare la protezione CSRF in Django, è necessario prima abilitare il middleware CSRF aggiungendo ‘django.middleware.csrf.CsrfViewMiddleware’ alla tua impostazione MIDDLEWARE. Quindi, nei tuoi moduli, devi utilizzare il tag di template {% csrf\_token %} per includere il token nella tua richiesta. Questo tag di template genererà un campo di input hidden con il token CSRF come valore.
Oltre alla sua protezione CSRF incorporata, Django fornisce anche altre funzionalità di sicurezza come l’hashing delle password, la protezione clickjacking e la protezione contro SQL Injection.
Un’importante sottolineatura è che sebbene Django includa queste funzionalità di protezione, è comunque responsabilità dello sviluppatore implementarle in modo appropriato. La sicurezza non è un prodotto, ma un processo, e benché Django fornisca gli strumenti per aiutare a prevenire gli attacchi CSRF, lo sviluppatore deve assicurarsi di utilizzarli sempre in modo corretto.
Fonti utilizzate:
- “Cross Site Request Forgery protection” – Documentazione di Django (https://docs.djangoproject.com/en/3.2/ref/csrf/)
- “Understanding the Django CSRF Middleware” – Real Python (https://realpython.com/django-csrf-protection/)
- “A Complete Guide to the Django CSRF Middleware and Decorator” – Simple is Better Than Complex (https://simpleisbetterthancomplex.com/tutorial/2016/10/31/how-to-handle-github-webhooks-using-django.html)