SDK source

SDK version

SDK source

SDK version


Actualiza al SDK del navegador 4.34.0 o posterior para evitar vulnerabilidades de seguridad en la configuración de tu proxy.

Resumen

El SDK del navegador RUM se puede configurar para enviar solicitudes a través de un proxy. Cuando configuras el proxy parámetro de inicialización del SDK a una URL como https://www.example-proxy.com/any-endpoint, todos los datos RUM se envían a esa URL utilizando el método POST. Los datos RUM aún necesitan ser reenviados a Datadog desde el proxy.

Configuración previa del proxy

Para reenviar una solicitud a Datadog con éxito, tu proxy debe

  1. Construir la URL de ingesta de Datadog.
  2. Agregar un encabezado X-Forwarded-For que contenga la dirección IP del cliente de la solicitud para una geoIP precisa.
  3. Reenviar la solicitud a la URL de ingesta de Datadog utilizando el método POST.
  4. Dejar el cuerpo de la solicitud sin cambios.
  • Por razones de seguridad, elimina cualquier encabezado HTTP que potencialmente contenga información sensible, como el encabezado cookie.
  • El cuerpo de la solicitud puede contener datos binarios y no debe ser convertido a una cadena. Asegúrate de que tu implementación de proxy reenvíe el cuerpo sin conversión.
  • Asegúrate de que tu implementación de proxy no permita que un actor malicioso envíe solicitudes a un servidor diferente. Por ejemplo: https://browser-intake-datadoghq.com.malicious.com.

Construye la URL de ingesta de Datadog

Tu URL de ingesta de Datadog debe tener el formato <INTAKE_ORIGIN>/<PATH><PARAMETERS> (por ejemplo, https://browser-intake-datadoghq.eu/api/v2/rum?ddsource=browser&...).

origen de ingesta

El origen de ingesta de Datadog corresponde a tu site parámetro de inicialización. El origen de ingesta de Datadog correspondiente a tu parámetro de sitio debe estar definido en tu implementación de proxy.

The intake origin for your Datadog site is https://browser-intake-datadoghq.com.

The intake origin for your Datadog site is https://browser-intake-us3-datadoghq.com.

The intake origin for your Datadog site is https://browser-intake-us5-datadoghq.com.

The intake origin for your Datadog site is https://browser-intake-datadoghq.eu.

The intake origin for your Datadog site is https://browser-intake-ap1-datadoghq.com.

The intake origin for your Datadog site is https://browser-intake-ap2-datadoghq.com.

The intake origin for your Datadog site is https://browser-intake-ddog-gov.com.

The intake origin for your Datadog site is https://browser-intake-us2-ddog-gov.com.

ruta

La ruta contiene la versión de la API y el producto (por ejemplo, /api/v2/rum para datos de RUM o /api/v2/replay para datos de reproducción de sesión).

The path for each request can be accessed in the request's ddforward parameter (for example, https://www.example-proxy.com/any-endpoint?ddforward=%2Fapi%2Fv2%2Frum%3Fddsource%3Dbrowser).

parámetrosLos parámetros de la solicitud (por ejemplo, ddsource=browser&...) pueden ser accedidos en el parámetro ddforward de la solicitud (por ejemplo, https://www.example-proxy.com/any-endpoint?ddforward=%2Fapi%2Fv2%2Frum%3Fddsource%3Dbrowser).

Configuración del SDK

Configura la URL del proxy en el parámetro de inicialización proxy:

import { Datacenter, datadogRum } from '@datadog/browser-rum';

datadogRum.init({
    applicationId: '<DATADOG_APPLICATION_ID>',
    clientToken: '<DATADOG_CLIENT_TOKEN>',
    site: '',
    proxy: '<YOUR_PROXY_URL>',
});
window.DD_RUM.onReady(function() {
    window.DD_RUM.init({
        clientToken: '<CLIENT_TOKEN>',
        applicationId: '<APPLICATION_ID>',
        proxy: '<YOUR_PROXY_URL>',
    });
});
window.DD_RUM &&
    window.DD_RUM.init({
        clientToken: '<CLIENT_TOKEN>',
        applicationId: '<APPLICATION_ID>',
        proxy: '<YOUR_PROXY_URL>'
    });

El SDK del navegador RUM agrega un parámetro de consulta ddforward a todas las solicitudes a tu proxy. Este parámetro de consulta contiene la ruta de la URL y los parámetros a los que todos los datos deben ser enviados.

Por ejemplo, con un site configurado en datadoghq.eu y un proxy configurado en https://example.org/datadog-intake-proxy, el SDK del navegador RUM envía solicitudes a una URL como esta: https://example.org/datadog-intake-proxy?ddforward=%2Fapi%2Fv2%2Frum%3Fddsource%3Dbrowser. El proxy reenvía la solicitud a https://browser-intake-datadoghq.eu/api/v2/rum?ddsource=browser.

Pasando una función al parámetro de inicialización proxy

El parámetro de inicialización proxy también admite una entrada de función. Esta función te permite tener más control sobre cómo se agregan la ruta y los parámetros a la URL del proxy.

Esta función recibe un objeto con las siguientes propiedades:

  • path: la ruta para las solicitudes de Datadog (ejemplo: /api/v2/rum)
  • parameters: los parámetros de las solicitudes de Datadog (ejemplo: ddsource=browser&...)
import { Datacenter, datadogRum } from '@datadog/browser-rum';

datadogRum.init({
    applicationId: '<DATADOG_APPLICATION_ID>',
    clientToken: '<DATADOG_CLIENT_TOKEN>',
    site: '',
    proxy: (options) => `https://www.proxy.com/foo${options.path}/bar?${options.parameters}`,
});
window.DD_RUM.onReady(function() {
    window.DD_RUM.init({
        clientToken: '<CLIENT_TOKEN>',
        applicationId: '<APPLICATION_ID>',
        proxy: (options) => `https://www.proxy.com/foo${options.path}/bar?${options.parameters}`,
    })
})
window.DD_RUM &&
    window.DD_RUM.init({
        clientToken: '<CLIENT_TOKEN>',
        applicationId: '<APPLICATION_ID>',
        proxy: (options) => `https://www.proxy.com/foo${options.path}/bar?${options.parameters}`
    });

Nota:

  • Algunos bloqueadores de privacidad ya apuntan a los patrones de URL de ingesta, así que puede que desees tener eso en cuenta al construir tu URL de proxy.
  • La función proxy se llama para cada solicitud, por lo que debe evitar cualquier cálculo pesado.
  • Las aplicaciones web JSP necesitan usar el carácter de escape \ para propagar correctamente estos parámetros al navegador. Por ejemplo:
    proxy: (options) => 'http://proxyURL:proxyPort\${options.path}?\${options.parameters}',
    

Antes de la versión 4.34.0 del SDK del navegador, se utilizaba el parámetro de inicialización proxyUrl, y el origen de ingesta de Datadog se incluía en el atributo ddforward. La implementación del proxy se encargaba de validar este host, y no hacerlo resultaba en diversas vulnerabilidades.

El origen de ingesta de Datadog debe definirse en tu implementación de proxy para garantizar la seguridad.

Para evitar vulnerabilidades de seguridad, actualiza al SDK del navegador 4.34.0 o posterior.

Further reading

Más enlaces, artículos y documentación útiles: