es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible obtener de manera segura un recurso JSON de una URL externa proporcionada por el usuario en un navegador?

Quiero permitir que los usuarios abran mi aplicación web a través de un enlace que ya contenga la URL al recurso externo. Luego, la aplicación web debe recuperar este recurso externo y renderizar el contenido en la página en función de él.

Esta característica es importante para permitir a los usuarios integrar mi aplicación con su propia aplicación o fuente de datos.

Suponiendo que mi aplicación web está alojada en example.com, un usuario necesita poder abrir un enlace como:

https://example.com/view?resource=https%3A%2F%2Fexternal-hosting.net%2Ffile%2F24345

entonces, en base a esto, mi código será:

typescript
const data = await fetch('https://external-hosting.net/file/24345')
const dataJSON = await data.json()

¿Es posible recuperar de forma segura dichos datos JSON directamente en el navegador, si no hay manera de asegurarse de que la URL sea confiable?

¿Qué vulnerabilidades de seguridad introduce esto y se pueden mitigar?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en seguridad web, aconsejaría no obtener datos JSON directamente en el navegador si la URL no se puede confiar. Esto introduce varias vulnerabilidades de seguridad, como:

    1. Ataques de secuencias de comandos entre sitios (XSS): el recurso externo podría contener código malicioso como JavaScript, que al ejecutarse en el navegador del usuario, puede robar información sensible o realizar acciones no autorizadas.
    2. Ataques de falsificación de petición en sitios cruzados (CSRF): un atacante podría engañar a un usuario para que abra un enlace que obtiene datos sensibles de un sitio de terceros sin su conocimiento o consentimiento.

    Para mitigar estas vulnerabilidades, recomendaría implementar las siguientes medidas:

    1. Use un proxy en el lado del servidor: en lugar de obtener el recurso externo directamente en el navegador, puede obtenerlo en el lado del servidor utilizando un proxy. El proxy puede validar la URL y filtrar cualquier código malicioso antes de pasar los datos al lado del cliente.
  2. Use la Política de seguridad de contenido (CSP): CSP es una función de seguridad que le permite especificar una lista blanca de fuentes confiables para varios tipos de contenido en su sitio web. Al configurar CSP, puede evitar que su sitio web cargue scripts o recursos maliciosos de fuentes no confiables.

  3. Use HTTPS: siempre use HTTPS para cifrar la comunicación entre el cliente y el servidor. Esto ayudará a evitar ataques de hombre en el medio y espionaje.

  4. Al implementar estas medidas, puede asegurarse de que su aplicación web sea segura y que los usuarios puedan integrarla de manera segura con sus propias aplicaciones o fuentes de datos.

Comments are closed.