En principio, JavaScript es un lenguaje de computacióncon permisos muy limitados. Este lenguaje de programación permite principalmente:
- Manipular la ventana del navegador actual por medio de DOM (Document Object Model).
- Abrir nuevos cuadros de diálogo o ventanas de navegación.
- Animar, visualizar y ocultar, o modificar, el diseño de los elementos de la página.
- Validar los valores de entrada.
- Recargar Ajax.
- Transferir información sobre los hábitos de lectura y las actividades del navegador del usuario a otras páginas web.
Para ello, JavaScript solo obtiene acceso a las cookies del usuario y a la memoria caché del navegador. Los propietarios web no pueden acceder al disco duro del usuario del navegador a través de JavaScript. Del mismo modo, tampoco es posible obtener acceso a las bibliotecas ni iniciar programas de seguimiento en el ordenador. Esto queda garantizado mediante el principio llamado caja de arena, que limita el área de influencia de los scripts a la ventana del navegador en la que se ejecuta JavaScript.
A pesar de estas limitaciones, JavaScript deja cierto espacio a la manipulación. Estos son algunos ejemplos de mala utilización de JavaScript:
- Seleccionar información a través del navegador o del sistema operativo de un usuario de Internet para registrar su comportamiento en línea o sondear brechas de seguridad (p. ej. pluginsno actualizados).
- Abrir incontables ventanas emergentes para paralizar el ordenador del usuario de Internet (Denial of Service, abreviado DoS).
- Ocultar código maligno.
- Simular páginas web de proveedores fiables en el marco de un ataque de phishing.
Además, hay que añadir los errores de programa que en ocasiones surgen durante el tiempo de ejecución de un script en el ordenador del usuario.
No obstante, el riesgo de seguridad principal no es el lenguaje de programación en sí, sino, más bien, el correspondiente intérprete de JavaScript del navegador. Si este no es adecuado, se crea una brecha de seguridad que debe cerrarse inmediatamente. Solo así se puede garantizar que los scripts funcionen de manera aislada en la caja de arena y no se vean influenciados por otros programas o por el sistema subyacente.