Saltar al contenido

Documentación

Privacidad y enmascarado

Qué se enmascara por defecto en el navegador, cómo ocultar elementos y cómo agregar tus propias reglas.

Wutbug enmascara los datos sensibles en el navegador del usuario, antes de enviar nada. Los valores enmascarados nunca llegan a nuestros servidores. Además, nada se sube hasta que la persona envía un reporte (salvo que actives la captura automática).

Lo que se enmascara por defecto

Replay y captura de pantalla

  • El valor de todos los inputs, textareas y selects (maskAllInputs: true). Se ve como •••.
  • Las contraseñas, siempre, aunque desactives maskAllInputs.
  • El texto de los elementos con class="wutbug-mask" o data-wutbug-mask.
  • Los elementos con class="wutbug-block" o data-wutbug-block se reemplazan por un bloque gris: no se graba su contenido.
  • No se graban canvas ni se incrustan imágenes en el replay.

Headers de requests y respuestas

El valor de estos headers se reemplaza por [REDACTED]:

authorization, proxy-authorization, cookie, set-cookie, x-api-key, x-auth-token, x-csrf-token, x-xsrf-token.

Claves en JSON, formularios y URLs

Si el nombre de una clave JSON, un campo x-www-form-urlencoded o un parámetro de la URL coincide con alguno de estos patrones (sin distinguir mayúsculas, en cualquier parte del nombre), su valor se reemplaza por [REDACTED]:

pass(word)?, pwd, secret, token, api[-_]?key, authorization, ^auth$, auth[-_]?token, cookie, session(id)?, credit[-_]?card, card[-_]?number, cvv, cvc, ssn.

Por ejemplo, access_token, userPassword y x-api-key coinciden. También se quitan el usuario y la contraseña incrustados en una URL (https://user:pass@…).

Texto libre

En todo texto capturado (argumentos de consola, mensajes de error, stack traces, URLs y bodies) se buscan y reemplazan:

  • JWT (eyJ….eyJ….…).
  • Credenciales en texto: Bearer …, Basic …, Token ….
  • Keys de proveedores: Stripe (sk_live_…, rk_test_…), GitHub (ghp_…, gho_……), Slack (xoxb-……) y AWS (AKIA…).
  • Números de tarjeta: secuencias de 13 a 19 dígitos que pasan la verificación de Luhn.

Bodies

  • Se truncan a 10.000 caracteres (maxBodyLength).
  • Los bodies binarios y en streaming no se leen.
  • Con captureBodies: false no se captura ningún body.

Ocultar partes de tu página

HTML
<p class="wutbug-mask">Ana Pérez · RUT 12.345.678-9</p>

<div class="wutbug-block">
  <iframe src="https://pagos.example.com/tarjeta"></iframe>
</div>

Si no puedes tocar el HTML, usa selectores:

TypeScript
wutbug.init({
  projectKey: 'pk_tu_key',
  endpoint: 'https://api.wutbug.dev',
  privacy: {
    maskTextSelector: '.perfil-nombre, [data-pii]',
    blockSelector: '#widget-pagos',
  },
});

Agregar tus propias reglas

Las reglas propias se suman a las de por defecto; nunca las reemplazan.

TypeScript
wutbug.init({
  projectKey: 'pk_tu_key',
  endpoint: 'https://api.wutbug.dev',
  privacy: {
    redactHeaders: ['x-tenant-secret'],      // headers
    redactKeys: ['rut', 'dni', 'telefono'],   // claves JSON / formularios / query (regex)
    redactPatterns: [/\bACME-\d{6}\b/],       // cualquier texto
    captureBodies: true,
    maxBodyLength: 10_000,
  },
  ignoreUrls: ['https://pagos.example.com', /\/api\/medical\//], // requests que no se registran
});

beforeSend: el último filtro

Para casos que las reglas no cubren, edita o descarta el reporte antes de enviarlo:

TypeScript
wutbug.init({
  projectKey: 'pk_tu_key',
  endpoint: 'https://api.wutbug.dev',
  beforeSend(report) {
    report.network = report.network.filter((r) => !r.url.includes('/api/salud/'));
    return report;
  },
});

Lo que no se enmascara

  • Texto visible en la página que no esté en un input ni marcado con wutbug-mask: nombres, direcciones o montos que tu app muestre se ven en el replay y la captura.
  • La grabación de pantalla opcional es un video de lo que la persona elige compartir: no se puede enmascarar. Solo existe si el usuario la inicia y acepta el permiso del navegador.
  • Lo que tu app pase a setUser() y setMetadata() se guarda tal cual.
  • Lo que tu app escriba en la consola se guarda, salvo lo que coincida con los patrones de texto libre.

Recomendaciones

  • Marca con wutbug-mask las zonas con datos personales visibles (perfil, direcciones, tablas de clientes).
  • Usa wutbug-block en iframes y widgets de pago o salud.
  • Agrega a redactKeys los identificadores de tu país o industria (rut, dni, curp, nss…).
  • Agrega a tu política de privacidad el texto sugerido sobre Wutbug.
  • Elige una retención acorde a lo que necesitas.