El peligro de JavaScript

JavaScript es un lenguaje de programación utilizado principalmente para páginas web. Cuando usted visita una página web, varios archivos se descargan en su computador, entre ellos, programas (scripts) escritos en JavaScript, estos últimos con el propósito de añadir funcionalidades extras a la página que se visita. Esto se hace de forma automática y silenciosa por parte de su navegador. Lo anterior tiene varias ventajas y puntos positivos, pero a la vez conlleva problemas graves en la libertad y seguridad del software.

Notar que me refiero únicamente a los scripts incorporados en las páginas web que se instalan de forma automática en el computador de los usuarios. No hablo de los complementos para los navegadores ni las aplicaciones para NodeJS, como Atom.

En primer lugar, la mayoría de estos programas son privativos, es decir, no respetan la libertad de sus usuarios. A causa de estos, el desarrollador ejerce un poder injusto sobre ellos. A lo anterior se suma el hecho de que los programas se instalan de manera automática, aunque no lo desee. Nadie puede obligarlo a instalar programas que no quiere en su computador, de la misma forma que nadie puede obligarlo a comprar artículos que no quiere para su casa o departamento.

Por otra parte, muchos programas en JavaScript contienen vulnerabilidades de seguridad que pueden ser explotados con fines maliciosos, así como también es posible que los mismos desarrolladores incluyan funcionalidades malévolas en los programas. Una forma de abordar el problema usada por los desarrolladores de navegadores es limitar las acciones que puede realizar el script, pero siempre se encuentran nuevas formas de evitar las restricciones.

https://github.com/w3c/fingerprinting-guidance/issues/8

No boundaries: Exfiltration of personal data by session-replay scripts

Websites can track us by the way we type – here’s how to stop it

La solución propuesta por la Fundación para el Software Libre (FSF) es que los desarrolladores web liberen el código fuente de sus programas. Pero así éstos seguirán siendo instalados automáticamente, lo que es injusto y se presta para ataques informáticos. Entonces, ¿qué se puede hacer?

Relacionado con lo anterior, la FSF desarrolló un complemento llamado LibreJS que bloquea todos los scripts que no son libres. Es posible modificar LibreJS para que bloquee todos los scripts, libres o no, y que el usuario pueda desbloquear fácilmente los libres. Así los programas no se instalarían solos. Sin embargo, para que un script sea detectado como libre, debe incluir ciertas marcas específicas.

Otra solución a los problemas expuestos es que el navegador implemente por defecto las tareas más comunes que realizan estos programas en JavaScript. Por ejemplo, muchos sitios web tienen scripts que realizan las mismas tareas ya que cada script sólo funciona en un sitio específico. Esto se puede resolver parcialmente usando liberías como jQuery, pero como JavaScript es un lenguaje interpretado, por lo que los programas escritos en este lenguaje serán más lentos que los escritos en un lenguaje compilado, como C++, el lenguaje en el que se escribió Mozilla Firefox. Así, podemos conseguir programas más eficientes y evitando la multiplicación de esfuerzos.

La propuesta anterior no sólo es una idea. Ahora el navegador puede reproducir vídeos, lo que hasta hace algunos años sólo era posible ejecutando Adobe Flash Player.

Ahora bien, ¿qué pasa si una página requiere una funcionalidad muy específica no implementada en el navegador? Lo ideal sería diseñarla de modo que no la requiera, pero si la requiere forzosamente es posible desarrollar un complemento para el navegador que la implemente. Lo anterior no haría que el programa fuese más eficiente, pero si evitaría que se instale automáticamente. Para ciertos tipos de programas -tales como juegos HTML5- también sería posible escribir una aplicación de escritorio.

En conclusión, el desarrollo de scripts que se descargan automáticamente para sitios web hace más daño que bien, ya que no es imprescindible para las bondades que ofrece y conlleva problemas de seguridad informática. Si usted desarrolla un sitio web, diséñelo de modo que no requiera JavaScript. Si no es posible, libere el código fuente de sus programas. Solicite a los webmasters que hagan lo mismo. Y por supuesto, evite activar JavaScript siempre que pueda.

PD: NoScript es un complemento para Firefox y derivados muy útil para activar JavaScript únicamente en sitios en los que confía.

Agregar un comentario

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Cambiar )

Google photo

You are commenting using your Google account. Log Out /  Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out /  Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out /  Cambiar )

Connecting to %s