lunes, 18 de marzo de 2013

Técnicas para fortalecer la protección de código web del lado del cliente


Dentro de los lenguajes de programación utilizados para desarrollar aplicaciones web existe el grupo de los llamados "lenguajes de programación del lado del cliente", de los cuales Javascript es uno de los más representativos.

Estos lenguajes se caracterizan por ejecutarse en el navegador de las computadoras cliente. Como todo lenguaje posee un código fuente que posteriormente es ejecutado linea por linea.

Una de las diferencias entre las aplicaciones web y las aplicaciones de escritorio es la facilidad con la cual puede observarse el código de las primeras. Los navegadores web más populares proporcionan accesos para observar el código detrás de una página web ya sea que esta utilice Javascript o no.

Desde el punto de vista del programador web o internauta experimentado esto puede representar una oportunidad para revisar características de las páginas que visita como los nombres de los archivos o incluso probar los códigos en las propias páginas. Sin embargo, cuando el código de cliente es creación propia, esta característica de los navegadores puede representar un riesgo:

1) Utilización por parte de terceros de algoritmos o soluciones que pueden ser creación propia.
2) Conocimiento sobre la estructura del propio sitio (nombres de archivos de inclusión, nombres de carpetas, nombres de los archivos).
3) Conocimiento de la estrategia de programación seguida y de los frameworks utilizados.
4) Conocimiento de los eventos manejados en el código (por lo general, el evento clic) y como se manejan dichos eventos.
5) Idea general de la metodología de desarrollo web utilizado.

Aunque lo anterior no podría representar un riesgo a menos que los "interesados" tengan cierto nivel de conocimientos, algunas veces conviene conocer ciertos "trucos" que pueden servirnos para evitar hasta cierto punto los aspectos mencionados anteriormente. Son los siguientes:

1) No incluir código Javascript en el archivo html (a menos que sea una línea para enlazar un archivo de inclusión).
2) En las url ya sea de archivos de inclusión como de imágenes, utilizar referencias relativas en vez de absolutas. Esto oculta información de la estructura del sitio y por supuesto, del nombre del servidor web.
3) Concentrar el código Javascript en archivos de inclusión guardados en carpetas bien identificadas en el servidor (por ejemplo, una carpeta acj  para indicar "archivos de codigo javascript").
4) Tener copias de respaldo de los códigos de cliente que se utilicen para que puedan ser fácilmente reemplazados en caso de corrupción o pérdida de los originales en el servidor.
5) Configurar el sitio web con derechos de acceso limitados parcial o totalmente a las carpetas en el web server. (Las carpetas que contengan archivos de inclusión con código de cliente son un buen ejemplo para aplicar esta medida).
6) Omitir mencionar los eventos dentro del código HTML. Por ejemplo el onclick del elemento input tipo button o el onload del elemento body. Para lograr esto se puede agregar en el archivo javascript de inclusión líneas de código para establecer los eventos de los botones cuando la página termine de cargarse (consultar el método setAttribute).
7) Ofuscar el código Javascript. Aún y cuando algún visitante curioso logre llegar hasta el código que maneja un evento; se le puede dificultar la labor de interpretación cuando el código es ilegible (aunque funcional). A esta estrategia se le conoce como ofuscar el código y consiste en eliminar espacios, saltos de línea, comentarios, reescribir sentencias de forma diferente (por ejemplo a+=1, en vez de a=a+1). Para realizar esto existen herramientas como jasob  (www.jasob.com) y otras que pueden encontrarse en la web. Es de aclarar que la versión ofuscada es para propósitos de explotación del sitio, no de desarrollo donde más valor tienen los comentarios y claridad del código.
8) Si se van a utilizar frameworks (como JQuery u otros) considere la opción de utilizar las versiones "en línea" de los sitios oficiales de dichos frameworks y no la de los propios servidores.








Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

No hay comentarios:

Publicar un comentario

Seguidores