Ocultar código fuente de JavaScript

9

En una aplicación web, ¿debería uno esforzarse por ocultar la mayor cantidad de código posible, por ejemplo, desde la fuente de vista? En particular, me preguntaba si JavaScript debería estar oculto, especialmente los que se usan para Ajax. Estaba pensando que si el JavaScript era un archivo externo, el archivo no podría estar en el servidor web o restringido usando .htaccess

EDITAR: Me doy cuenta de que no puedo evitar por completo que el usuario vea JavaScript como se interpreta en su extremo. Sin embargo, me preguntaba si hay algún punto para disuadirlos de ver dicho código, por ejemplo, hacerlo un poco más difícil que simplemente escribir www.mywebsite.com/how_login_is_done.js

    
pregunta Celeritas 14.02.2013 - 18:25
fuente

5 respuestas

38

El código Javascript se ejecuta en el navegador del cliente, de modo que el navegador del cliente ve el código y cada usuario puede obtenerlo. En el mejor de los casos, puede ofuscar el código para (tratar de) ocultar su significado y comportamiento. La ofuscación no disuadirá a los atacantes motivados (solo los enfadará un poco más), por lo que sería bastante imprudente usarla como base para su modelo de seguridad.

Si desea ocultar el código, no lo envíe a la máquina del atacante; mantenerlo en el lado del servidor.

    
respondido por el Tom Leek 14.02.2013 - 18:47
fuente
15

Esto no es posible porque no puede imponer el comportamiento de un cliente. Cualquier solicitud que el cliente haga puede ser interceptada y manipulada con TamperData o BURP. Cualquier JS que se esté ejecutando en un cliente puede ser depurado usando FireBug.

He visto a algunos desarrolladores seguir el camino de (en) security cierto dark , lo cual considero que es una vulnerabilidad de ingeniería que debe evitarse por completo.

    
respondido por el rook 14.02.2013 - 18:33
fuente
11

Primero, cualquier javascript del lado del servidor que pueda ejecutar (por ejemplo, si el servidor web es node.js ) debe ocultarse a los visitantes. Cualquier javascript del lado del cliente debe ser descargado por los usuarios para ejecutarse en sus navegadores y no se puede ocultar. Puede minimizar / uglify su código y si lo desea, y no debería sentirse obligado a servir también la versión original no minificada . Sin embargo, todavía tienen código minificado completamente funcional en su máquina; la principal diferencia es que la versión reducida ya no tiene nombres descriptivos convenientes para que los humanos analicen. Esto hace que sea un poco más difícil pasar por la lógica del lado del cliente, pero es relativamente sencillo de hacer ya que tiene un depurador JS integrado en la mayoría de los navegadores modernos.

Conclusión: No puede asumir o confiar en que el JavaScript de su lado del cliente sea secreto, lo ejecuta el navegador.

    
respondido por el dr jimbob 14.02.2013 - 19:32
fuente
0

Opciones:

  • Cargue el código JavaScript del lado del cliente propiciatorio después de que el usuario haya iniciado sesión en el sitio web.
  • Si aún no desea que los usuarios autenticados vean el código JS, cargue un JS en el cliente que llama a otro archivo JS que se ejecuta en el servidor o llame a un servicio como un WebAPI. Por supuesto, usted quiere asegurar el canal de comunicación, tal vez utilizando HTTPs.
respondido por el H A 18.12.2014 - 08:04
fuente
0

¿El compresor yui no lo hace difícil para la legibilidad humana? En cualquier caso, no debe hacer la validación solo en el lado del cliente. Recuerde, no se llama servidor cliente para nada, así que deje que el servidor haga la mayor parte del trabajo. Lo que hay que recordar es que la World Wide Web nunca tuvo la intención de ser opaca hasta el punto final. Ese apodo pertenece a aplicaciones nativas.

    
respondido por el mincewind 18.12.2014 - 14:27
fuente

Lea otras preguntas en las etiquetas