5 pratiche di sicurezza per sviluppare con Javascript

Un breve, brevissimo, memo di orientamento sul versante browser in 5 piccoli punti.

Lo sviluppo di applicazioni web moderne implica spesso l’uso estensivo di JavaScript per aggiungere interattività e dinamicità alle pagine web. Tuttavia, con la crescente complessità delle applicazioni JavaScript, è essenziale adottare le migliori pratiche di sicurezza per proteggere i tuoi utenti e i loro dati.

In questo articolo, esploreremo alcune delle migliori pratiche di sicurezza di sviluppo lato client e, con i framework moderni e NodeJS, anche lato server.

letture consigliate

“JavaScript: The Good Parts” di Douglas Crockford – Questo libro offre una panoramica approfondita delle migliori pratiche di JavaScript, concentrandosi sugli aspetti del linguaggio che possono migliorare la sicurezza e l’affidabilità del codice.

“Web Security for Developers: Real Threats, Practical Defense” di Malcolm McDonald e James R. Kettle – Questo libro fornisce una guida pratica alla sicurezza web per gli sviluppatori, coprendo una vasta gamma di argomenti, tra cui XSS, CSRF, SQL Injection e altro ancora.

“The Tangled Web: A Guide to Securing Modern Web Applications” di Michal Zalewski – Un libro avanzato che esplora le sfide uniche della sicurezza delle applicazioni web moderne e fornisce strategie e tecniche per mitigare i rischi.

1. Validazione lato client e server

Una delle prime linee di difesa contro le vulnerabilità di sicurezza è la validazione dei dati sia lato client che lato server. Utilizza le funzionalità di validazione fornite dai framework JavaScript come Express.js per verificare che i dati inviati dagli utenti siano conformi alle aspettative del tuo sistema e per prevenire attacchi come l’inserimento di script dannosi (XSS) o l’iniezione di SQL.

Una SQL injection in realtà aumentata (fonte)

2. Utilizzo di librerie e framework sicuri

Quando scegli librerie e framework JavaScript per il tuo progetto, assicurati di selezionare quelli che sono regolarmente aggiornati e supportati dalla comunità. Evita di utilizzare librerie obsolete o non mantenute, poiché potrebbero contenere vulnerabilità di sicurezza note.

3. Gestione sicura delle password

Se il tuo sito web richiede la gestione di password degli utenti, assicurati di utilizzare pratiche di hashing sicure come bcrypt per proteggere le password memorizzate nel database. Evita di memorizzare le password in chiaro o utilizzare algoritmi di hash deboli che possono essere facilmente compromessi.

SecurityHeaders.com
Un sito che fornisce informazioni su come implementare correttamente le intestazioni di sicurezza HTTP, come Content Security Policy (CSP), per proteggere le tue applicazioni web da attacchi XSS e altre minacce.

4. Protezione contro attacchi XSS

Gli attacchi XSS (Cross-Site Scripting) sono comuni nelle applicazioni JavaScript e possono consentire agli aggressori di eseguire script dannosi sul browser dell’utente. Per proteggerti da questi attacchi, utilizza sempre l’escape dei dati in output e applica Content Security Policy (CSP) per mitigare il rischio di esecuzione di script non autorizzati.

5. Aggiornamenti regolari e monitoraggio della sicurezza

Infine, assicurati di mantenere il tuo codice JavaScript aggiornato e di monitorare regolarmente la sicurezza del tuo sito web per individuare e risolvere tempestivamente eventuali vulnerabilità. Se vuoi diventare un esperto di sicurezza informatica dovrai poter contare su risorse e strumenti affidabili, mantenendoti aggiornato e sempre al passo con lo stato dell’arte. Pertanto non mancare di consultare e mettere tra i preferiti risorse come OWASP (open Web Application Security Project) e Mozilla Developer Network (MDN).

La sicurezza è una parte fondamentale dello sviluppo di qualsiasi applicazione, se è un’applicazione web non ne parliamo proprio! Gli sviluppatori, specie i junior e quelli provenienti da linguaggi di programmazione server-side che non hanno mai usato un linguaggio come JavaScript, devono essere consapevoli dei rischi e delle migliori pratiche per proteggere le loro applicazioni e i loro utenti.

Creazione di un’applicazione web con Django

Se sei un aspirante sviluppatore web o un programmatore alla ricerca di un framework robusto e flessibile per creare applicazioni web dinamiche, allora Django potrebbe essere la soluzione perfetta per te. In questo tutorial, ti guideremo attraverso i passaggi necessari per creare la tua prima applicazione web utilizzando Django.

Passo 1: Installazione di Django

Prima di tutto, assicurati di avere Python installato sul tuo sistema. Dopodiché, puoi installare Django eseguendo il seguente comando:

pip install django

Passo 2: Creazione di un nuovo progetto Django

Una volta installato Django, puoi creare un nuovo progetto eseguendo il seguente comando:

django-admin startproject nomedelprogetto

Questo creerà una nuova directory con il nome del tuo progetto Django e alcuni file di base.

Passo 3: Creazione di un’applicazione Django

Dentro il tuo progetto Django, puoi creare un’applicazione eseguendo il seguente comando:

python manage.py startapp nomedellapplicazione

Questo genererà una nuova directory per la tua applicazione Django insieme a una serie di file predefiniti.

Passo 4: Definizione dei modelli

Uno dei principali vantaggi di Django è il suo sistema di modelli, che ti consente di definire la struttura del database in modo semplice e intuitivo. Definisci i modelli necessari per la tua applicazione all’interno del file models.py della tua applicazione.

Passo 5: Configurazione delle viste

Le viste gestiscono la logica di presentazione della tua applicazione Django. Definisci le viste necessarie all’interno del file views.py della tua applicazione e associale alle URL corrispondenti nel file urls.py.

Passo 6: Creazione dei template HTML

Utilizza i template HTML per definire l’aspetto e la struttura delle pagine web della tua applicazione. Crea i template necessari all’interno della directory templates della tua applicazione.

Passo 7: Esecuzione delle migrazioni

Dopo aver definito i tuoi modelli, esegui le migrazioni per applicare le modifiche al database utilizzando il seguente comando:

python manage.py makemigrations
python manage.py migrate

Passo 8: Avvio del server di sviluppo

Infine, avvia il server di sviluppo Django eseguendo il seguente comando:

python manage.py runserver

Se come ti auguro tutto è andato come doveva hai appena creato la tua prima applicazione web utilizzando Django. Questo è solo l’inizio del tuo viaggio con questo potente framework, e ci sono molte altre funzionalità e concetti da esplorare. Continua a praticare e sperimentare per diventare un esperto sviluppatore Django.

Get rid of Tailwind CSS color warnings on both web browser console and command line.

Are you upset about Tailwind CSS (stupid) warnings? No worries, I have been done as well and I know what you are annoyed about.

If you are here maybe you bumped into the following warning message:

It also occur console side when you compile your project, in my case a Laravel 9.x installation.

Are you tired about that? Here’s the solution, mate, dont worry! Be happy!

In your tailwind.config.js file, edit the first rows. Remove/comment “const colors” in favour of “let colors”.

And add the following lines:

// removing old colors
delete colors.lightBlue;
delete colors.warmGray;
delete colors.trueGray;
delete colors.coolGray;
delete colors.blueGray;

You can then recompile your project ( in my case npm run dev ) and voilà … message will not bore you anymore.

Say bye bye to these messages:

warn - As of Tailwind CSS v2.2, lightBlue has been renamed to sky.
warn - As of Tailwind CSS v3.0, warmGray has been renamed to stone.
warn - As of Tailwind CSS v3.0, trueGray has been renamed to neutral.
warn - As of Tailwind CSS v3.0, coolGray has been renamed to gray.
warn - Update your configuration file to silence this warning.
warn - As of Tailwind CSS v3.0, blueGray has been renamed to slate.
warn - Update your configuration file to silence this warning.

Strumenti per la manipolazione dei PDF gratis e non

Quali sono i software e i servizi che puoi usare per tutto quello che ti serve con i tuoi file PDF?

I PDF, acronimo di Portable Document Format, rappresentano uno standard universalmente riconosciuto per la condivisione di documenti. Creato da Adobe Systems negli anni ’90, questo formato ha rivoluzionato la fruizione e la condivisione di contenuti. Oggi esistono numerosi strumenti per manipolare i PDF, rendendoli modificabili e adattabili alle esigenze degli utenti.

Software installabili sul proprio sistema operativo

Tra i software più noti, Adobe Acrobat Professional (disponibile per Windows e MAC) spicca per la sua versatilità e la sua potenza. Se volete il software più professionale e completo possibile, Adobe Acrobat Professional è il non plus ultra, tuttavia i costi associati possono risultare proibitivi per l’utente medio. Alcune alternative valide includono Nitro PDF e Foxit PhantomPDF, entrambi multipiattaforma e entrambi offrono molte delle funzionalità presenti in Adobe Acrobat Professional.

Per gli utenti Linux, strumenti come pdftk di PDF Labs offrono potenti funzionalità di manipolazione. È un poco impiccioso farli girare da riga di comando, ma rappresentano veramente quanto di più potente esista in giro, per giunta free e open source!

È davvero fondamentale comprare/avere un software installato localmente?

Avere un software di manipolazione PDF installato localmente offre vantaggi considerevoli in termini di indipendenza, velocità e accesso alle funzionalità anche senza una connessione. Tuttavia, si pongono anche alcuni svantaggi, come la questione costi e il fatto che il software sarà disponibile solo sulle macchine dove è alloggiato.

È importante valutare attentamente se questi fattori superano i benefici. Personalmente ritengo che Adobe Acrobat Professional sia un software meraviglioso (che ho anche acquistato in passato), ma che le alternative open-source sono altrettanto meravigliose e soprattutto estendibili, se ad esempio state scrivendo un software.

Quali sono le alternative online?

Per coloro che preferiscono evitare l’installazione di software locale, esistono ottime opzioni online. Servizi come ilovepdf.com e pdfresizer.com consentono di eseguire molte delle operazioni comuni di manipolazione PDF direttamente dal browser. Tuttavia, l’accesso costante a Internet è essenziale, e alcuni utenti potrebbero esitare (comprensibilmente) a caricare documenti sensibili su piattaforme esterne.

Allora? Quale software scelgo?

La manipolazione dei PDF è diventata una parte essenziale del nostro lavoro digitale quotidiano. Sia che si scelga un software locale o una soluzione online, è fondamentale comprendere le esigenze personali e professionali per adottare la soluzione più adatta. Con molte alternative disponibili, la scelta dipende dalle preferenze e dalle necessità di ciascun utente.

Inoltre, nulla vieta un approccio ibrido, anzi la mia personale esperienza suggerisce che questo sia il miglior modo di approcciarsi al problema.

Ad esempio puoi numerare le pagine di un documento PDF online con ilovepdf.com e quindi, con pdfresizer.com, affiancare le pagine orizzontalmente in modo da stampare delle dispense universitarie o dei documenti da consultare.

Spero di essere stato utile. Mi sono dimenticato qualcosa? Lacia un commento e fammelo sapere.

A list of 89 most relevant languages in .csv format

Get the file, convert, export, import in sql … basically do what you need to

Here it is a present for you all guys and for my future self, a list in csv of the most spoken language, ready to be integrated in your software.

If you need more details about languages, take a look to this website I bumped into: Glottolog.org. It is a beautiful project, which expose interesting information about languages, take a look at it if you wish.