¿El pirata informático puede modificar el código JavaScript en el navegador para obtener acceso a un recurso no autorizado?

0

Tengo la aplicación Spring Boot API en el lado del servidor y la aplicación VueJS en el lado del cliente. Tras un inicio de sesión exitoso, el lado del servidor envía una respuesta JSON que incluye accountType con el valor VIEW_GOLD o VIEW_SILVER, si accountType es VIEW_GOLD, se dirige al usuario para ver la lista del objeto GoldBar y así sucesivamente, como en este código en el lado del cliente >

         if (response.data) {
             if (response.data.accountType === 'VIEW_GOLD') {

               $this.$router.replace({ name: 'GoldBars'})

             } 
             else if (response.data.accountType === 'VIEW_SILVER') {

               $this.$router.replace({ name: 'SilverBars'})
            }

La pregunta es si un hacker puede ver Goldbars cuando el tipo de cuenta es VIEW_SILVER utilizando un navegador de hackers como Tor?

    
pregunta user61766 01.08.2018 - 12:14
fuente

2 respuestas

2

Cada navegador viene con potentes herramientas de desarrollo. La tecla de acceso rápido habitual para acceder a ellos es F12 .

Cualquier usuario podría usar el depurador de JavaScript de su navegador para establecer un punto de interrupción en la línea if (response.data) , espere hasta que se alcance el punto de interrupción, edite el valor response.data.accountType para leer VIEW_GOLD mientras la ejecución es pausado y continuar la ejecución del javascript.

Algunos navegadores como Chrome incluso permiten editar el código JavaScript de un sitio web mientras está cargado.

No hay nada que puedas hacer realmente para evitar que los usuarios usen estas herramientas.

¡Así que sigue el dogma nunca confíes en el cliente ! no maneje nada relacionado con el manejo de permisos en el lado del cliente. El servidor debe conocer el nivel de permiso del usuario y simplemente negarse a proporcionar cualquier información a la que se supone que el usuario no tiene acceso.

Por cierto: este dogma no solo se aplica a las aplicaciones web, sino a cualquier forma de arquitectura cliente-servidor. Es posible que las herramientas de depuración para un cliente binario no sean tan accesibles como las de los navegadores web, pero existen.

    
respondido por el Philipp 01.08.2018 - 13:34
fuente
1

Este es un problema de autenticación muy básico. Usted tiene su código del lado del servidor que se supone proporciona información como respuesta a una solicitud.

Desea que su servidor proporcione los datos de un "GoldView" (sea lo que sea) solo a usuarios autorizados. Esto requiere que el servidor reciba alguna prueba de que la entidad solicitante de hecho está autorizada para obtener estos datos.

Entregar un token al iniciar sesión (puede ser una simple clave de sesión, un JWT o algo más) es una buena idea PERO asegúrese de que nadie pueda falsificar un token a pedido. Además, este token debe enviarse al servidor con cada solicitud, lo que requiere autenticación.

En general, suponga lo siguiente:

  • Lo que esté contenido en tu aplicación VueJS, puede ser leído por un atacante (a medida que se lo envíes)
  • Todo que recibe tu servidor es una entrada maliciosa hasta que se demuestre lo contrario
  • El servidor debe verificar cada solicitud y verificar los privilegios de los clientes que solicitan, antes de enviar los datos
  • A menos que generar un token requiera un secreto de servidor, un ataque puede falsificar tokens arbitrarios

P.S .: Tor no es un "navegador de hackers" y no puede hacer nada mágico para evitar tus medidas de seguridad. Es solo una red de proxy complicada que no debería preocuparle cuando se trata de la autenticación del lado del servidor (es un tema completamente diferente).

    
respondido por el GxTruth 01.08.2018 - 13:17
fuente

Lea otras preguntas en las etiquetas