In linea di principio, JavaScript è un linguaggio informatico con autorizzazioni molto limitate. Il linguaggio di Scripting consente fondamentalmente di:
- manipolare la finestra corrente del browser tramite DOM (Document Object Model),
- aprire nuovi browser o finestre di dialogo,
- animare gli elementi della pagina, metterli in evidenza o nasconderli o modificarne la configurazione,
- convalidare i valori di input,
- trasferire informazioni sulle abitudini di lettura e sulle attività di navigazione dell’utente ad altri siti web.
JavaScript può accedere soltanto ai cookie dell’utente e ai cookie di dati relativi ai siti web. Con JavaScript un operatore di un sito web non può accedere al disco rigido dell’utente. Con il linguaggio di Scripting non è quindi possibile richiamare librerie, né avviare programmi ulteriori. Ciò è garantito dal cosiddetto principiodellasandbox, che limita la sfera d’influenza degli script alla relativa finestra del browser in cui JavaScript viene eseguito.
Ciò nonostante, JavaScript offre un certo margine di manipolazione. Un uso improprio di JavaScript consente ad esempio di:
- leggere informazioni sul browser o sul sistema operativo di un utente per registrare la sua esperienza di navigazione o per rilevare falle di sicurezza (ad es. plug-in obsoleti),
- aprire innumerevoli finestre pop-up per bloccare il computer dell’utente (Denial of Service, abbreviato DoS),
- simulare siti Web di fornitori di fiducia in attacchi di phishing.
Talvolta, inoltre, sul computer dell’utente possono verificarsi bug di sistema solo durante l’esecuzione di uno script.
Il rischio principale per la sicurezza non è tanto il linguaggio di Scripting, quanto l’interprete di JavaScript nel browser. Se questo è difettoso, si verifica una falla di sicurezza che deve essere chiusa immediatamente. Questo è l’unico modo per assicurare che gli script funzionino separatamente nella sandbox senza influenzare altri programmi o il sistema operativo.