Per difendersi dagli attacchi, uno sviluppatore deve mitigare le vulnerabilità e aggiungere funzionalità di sicurezza a un'applicazione. Fortunatamente, il browser offre molte funzionalità di sicurezza sul web. Alcuni possono essere attivati dagli sviluppatori, mentre altri sono attivi per impostazione predefinita per proteggere gli utenti.
L'idea di una "sandbox"
I browser web moderni sono basati sull'idea di una "sandbox". Una sandbox è un meccanismo di sicurezza utilizzato per eseguire un'applicazione in un ambiente circoscritto. Proprio come la sandbox fisica di un parco giochi in cui i bambini possono creare tutto ciò che desiderano entro i confini senza creare confusione altrove, il codice dell'applicazione ha la libertà di eseguire in un ambiente limitato. Ad esempio, JavaScript può aggiungere e modificare elementi sulla pagina, ma potrebbe non essere in grado di accedere a un file JSON esterno. Il motivo è una funzionalità della sandbox chiamata "stessa origine"
Perché è necessaria una sandbox?
Ogni giorno, gli utenti del web scaricano codice arbitrario e lo eseguono sul proprio computer o telefono più volte. Se qualcuno ti dicesse "Ehi! Scarica ed esegui questa applicazione!", potresti fermarti a pensare se l'applicazione proviene da una fonte attendibile, leggere informazioni sul fornitore dell'applicazione o controllare attentamente le recensioni. E quando qualcuno ti invia un URL dicendo "Dai un'occhiata a questo post del blog"? Probabilmente faresti clic su questa opzione senza porre domande come "Che tipo di JavaScript scaricherà questo sito?".
La sandbox del browser è la funzionalità principale che semplifica la navigazione sul web rendendo più sicura l'esecuzione di codice arbitrario.
La sicurezza prima di tutto
Se il browser esegue l'uso della sandbox per ogni applicazione web, dovremmo preoccuparci della sicurezza? Assolutamente sì!
Innanzitutto, le funzionalità della sandbox non sono lo scudo perfetto. Anche se i tecnici dei browser lavorano sodo, i browser potrebbero presentare vulnerabilità e gli utenti malintenzionati cercano sempre di aggirare la sandbox (come con Spectre Attack).
A volte la sandbox potrebbe rendere più piacevole la creazione di un'esperienza web ottimale. Ad esempio, un browser potrebbe bloccare una richiesta di recupero per un'immagine ospitata su un dominio diverso. Puoi condividere risorse su domini diversi attivando la condivisione delle risorse tra origini (CORS in breve), ma se non esegui questa operazione con attenzione, puoi esporre una risorsa a tutti gli altri utenti sul web, annullando sostanzialmente la sandbox.
Conclusione
Un'esperienza web sicura può essere ottenuta solo se la sicurezza è integrata nella progettazione dell'applicazione e una progettazione efficace inizia dalla comprensione delle funzionalità esistenti. Le due guide successive spiegano in dettaglio come CORS e i criteri della stessa origine.