¿Qué tan fácil es el código JavaScript para una aplicación móvil? [cerrado]

1

El templado de código, es decir, realizar algunas modificaciones de código es una seria amenaza para las aplicaciones móviles, ya que no tiene control sobre una aplicación del lado del cliente. Además, acceder al código fuente de javascript es trivial. ¿Pero modificarlo también es fácil? ¿Qué tan fácil es el código JavaScript para una aplicación móvil?

Editar: estoy interesado en el sitio web que se ejecuta en un servidor y en la aplicación del lado del cliente

    
pregunta Kepotx 26.04.2018 - 11:46
fuente

2 respuestas

2

Suponiendo que está hablando de una aplicación web que se ejecuta en el navegador debido a las etiquetas:

Eso depende, la manipulación de JavaScript es trivial, si no se toman precauciones y eso también es cierto para dispositivos de escritorio / portátiles.

La precaución más simple y más importante es usar HTTPS, por lo tanto, evitar que se modifique el código usando el ataque MITM.

Otros más avanzados incluyen SRI, que requiere que se incluyan hashes de la secuencia de comandos en el encabezado o al menos un nonce que se esté utilizando. Esto mejora mucho la seguridad, ya que un atacante tendría que tener un control significativo del servidor para subvertirlo.

Sin embargo, si un atacante tiene el control total del servidor web, actualmente no hay manera de mitigar un ataque de este tipo que no sea revisar el script manualmente cada vez.

    
respondido por el Peter Harmann 26.04.2018 - 11:59
fuente
1

Hay un lote de vectores de ataque para defenderse en una aplicación web moderna, demasiados para cubrirlos en profundidad aquí.

Pero aquí hay un par de puntos de alto nivel a considerar:

Primero, su aplicación del lado del servidor recibe solicitudes de una aplicación JavaScript del lado del cliente, pero no tiene forma de saber si esas solicitudes realmente provienen de una copia no modificada del código JavaScript, una versión con otro JavaScript inyectado en ella. o una aplicación personalizada completamente separada y utilizada por un atacante. Por lo tanto, nunca debe confiar en los datos de que llegan al servidor desde Internet, ya sea que provengan de su código JavaScript o no: siempre verifique que esté correctamente autenticado y bien formado, para < em> cada solicitud.

Para evitar ataques como CSRF, también debes asegurarte de que cada nueva solicitud que ingresa esté vinculada a una interacción existente del usuario (por ejemplo, utilizando tokens anti-CSRF), no "de la nada".

Recuerde, usted está dando a posibles atacantes todo el código fuente a su aplicación del lado del cliente. Nada que termine en el JavaScript puede ser considerado secreto o seguro. La ofuscación de JavaScript no es una defensa, sino más bien un golpe de velocidad. (Aunque es útil para fines de minificación y otros). No asuma que, debido a que los navegadores móviles no facilitan el acceso a una consola de JavaScript, su atacante no tendrá acceso a una consola de JavaScript en un dispositivo móvil (o un navegador que pretende estar en un dispositivo móvil). Si está sirviendo JavaScript vulnerable a Internet, entonces es vulnerable, punto.

Dirigiéndose a la parte del cliente de su pregunta: la única forma de que sus usuarios legítimos sepan que está obteniendo una carga de JavaScript de usted y no de algún otro atacante es que hayan confiado en un tercero que en Gira confía en ti. Los certificados SSL / TLS firmados por una CA de amplia confianza son la solución normal aquí, aunque en algunos casos es posible que necesite más que eso, por ejemplo. firma de código también.

Algunos clientes habrán comprometido su propia seguridad (por ejemplo, instalando extensiones de navegador incompletas de quién sabe dónde) y nunca podrá eliminarlas por completo, aunque en algunos casos puede detectarlas. Tampoco es realmente tu lugar para derrotarlos: si un usuario tiene un malware en su propio dispositivo, ese es realmente su problema y no el tuyo. Tu primera defensa contra eso es el primer punto anterior: no confíes en el código del lado del cliente.

Además, todo lo anterior supone que los atacantes no tienen acceso a los sistemas de su servidor. Eso es crucial: la forma única de que el tráfico del mundo exterior pueda llegar a sus servidores de producción es a través de los puertos que ha abierto explícitamente a Internet (en estos días, puerto 80 y 443) y por cualquier administración. mecanismo que utiliza (que idealmente debería estar protegido por un mecanismo criptográfico fuerte, por ejemplo, autenticación de clave pública SSH, no simplemente por contraseñas). Sus sistemas del lado del servidor deben mantenerse actualizados con todos los parches de seguridad e idealmente deberían ser examinados por un profesional de seguridad competente para garantizar que no haya otras vulnerabilidades que no conozca.

Finalmente: todo esto es un proceso continuo. La web de hoy está llena de atacantes drive-by. Debería esperar que mantener y proteger su aplicación sea un costo continuo, no solo en términos de dinero sino también en tiempo y energía.

    
respondido por el Daniel Pryden 26.04.2018 - 14:30
fuente

Lea otras preguntas en las etiquetas