En 2024, un investigador de seguridad analizó 20 sitios web de “fusión de PDF gratuita” y descubrió que 17 de ellos almacenaban los PDFs subidos por los usuarios en almacenamiento temporal de CDN — y 3 de ellos no los habían eliminado después de 24 horas. En otras palabras, el contrato, registro médico o currículum que subiste hoy sigue en el disco de otra persona mañana, y ni siquiera lo sabes.

El PDF es un tipo de datos especialmente sensible. Frecuentemente contiene tu contenido más privado — escaneos de DNI, contratos, recibos de nómina, registros médicos, pasaportes, expedientes académicos. Pero como “parece solo un documento”, la defensa mental de las personas es más baja que para, por ejemplo, fotos íntimas. Este artículo usa 3 estudios de caso reales de incidentes de privacidad para explicar por qué insistimos en todo el procesamiento de PDF en el navegador, y cómo puedes verificar si cualquier herramienta realmente procesa localmente.

3 Incidentes Reales

Un sitio de “fusión de PDF gratuita”, recomendado por muchos, fue descubierto por un investigador de seguridad porque había almacenado 2 millones de PDFs subidos por usuarios en AWS S3, con permisos del bucket mal configurados que permitían acceso público. El corpus incluía elementos que podían vincularse a identidades reales: cartas de abogados, resúmenes de altas hospitalarias, diplomas.

Causa raíz: El equipo de ingeniería usó almacenamiento temporal S3 para “caché de aceleración” (la CDN estaba mal configurada), pero los permisos IAM del bucket se establecieron como public-read. El botón de subir de la herramienta no decía “subir a S3”; solo decía “subir a la nube para procesar”.

Lo que el usuario pudo haber hecho: Antes de subir, presionar F12 y mirar la pestaña Network. Si ves solicitudes POST yendo a dominios de terceros, la herramienta no es puramente frontend.

Incidente 2: Un “Anonimizador de PDF” que Solo Tapaba Visualmente (2024)

Una herramienta comercializada como “sube registros médicos, anonimiza automáticamente todos los nombres y direcciones” fue encontrada por un ingeniero que usaba “anonimización” que era solo enmascaramiento visual (dibujar rectángulos negros sobre los nombres) — el flujo de texto original dentro del PDF aún contenía los nombres. Cualquiera con habilidades de ingeniería inversa de PDF podía extraer el texto original.

Causa raíz: La anonimización real requiere modificar el flujo de contenido del PDF (reescribir objetos con una biblioteca como pdf-lib), pero el enmascaramiento visual es 1 línea de código (dibujar un rectángulo en la página). Implementación de bajo costo vs implementación de alto costo es una decisión de negocio.

Lo que el usuario pudo haber hecho: Subir un “registro médico de prueba” lleno de NOMBRE DE PRUEBA test-name, luego descargar el resultado, abrirlo en un editor de PDF y mirar el flujo de texto. Un PDF verdaderamente anonimizado debería hacer que la búsqueda de texto por cualquier nombre no devuelva nada.

Incidente 3: La Controversia de Escaneo + Datos de Entrenamiento de un Servicio de OCR (2025)

Una herramienta de “PDF OCR a Word” impulsada por IA escribió en su acuerdo de usuario: “los archivos subidos pueden usarse para mejorar nuestros modelos de IA”. Legalmente esto está permitido (el usuario aceptó el EULA), pero ningún usuario que subió sus contratos se dio cuenta de que su contrato estaba entrenando una IA.

Causa raíz: El modelo de negocio “herramienta gratis por datos”. Las herramientas gratuitas no venden anuncios (los anunciantes no quieren gastar dinero en herramientas de OCR), así que revenden datos en su lugar.

Lo que el usuario pudo haber hecho: Antes de subir, desplazarse hasta la sección “uso de datos” del acuerdo de usuario. Suele estar enterrada en el medio. Desde una perspectiva legal, si los datos se usan para “mejora del servicio”, eso usualmente incluye entrenamiento de modelos.

Por Qué Insistimos en el Procesamiento Local

Herramientas PDF de Piick tiene exactamente un principio de diseño: los archivos nunca salen del navegador.

Implementación técnica:

  • Todas las operaciones de PDF se ejecutan en la memoria del proceso del navegador, usando pdf-lib (/src/components/tools/PdfTools.astro)
  • Los objetos de archivo nunca se envuelven en FormData de fetch
  • Los clics de botón nunca disparan ninguna solicitud de red
  • Los archivos procesados producen directamente una URL blob: — esta URL es interna al sandbox del navegador; el mundo exterior no puede verla

Honestidad en el diseño:

  • Nuestra página de privacidad establece claramente “sin subida, sin almacenamiento, sin entrenamiento”. Esta es una promesa, no texto de marketing.
  • Nuestro código es un sitio estático — no hay servidor backend al que subir (el dominio piick.cc es solo alojamiento de activos estáticos HTML + JS + CSS, salida de compilación de Astro 4.x + caché CDN).
  • No tenemos sistema de cuentas — sin registro, sin inicio de sesión, sin correo electrónico.

Cómo Verificar que Cualquier Herramienta que Uses Realmente Hace Procesamiento Local

Si estás usando la herramienta de PDF de otro proveedor, haz estas 3 verificaciones:

Paso 1: Monitoreo de Red con DevTools

Abre las herramientas de desarrollador de tu navegador (F12), cambia a la pestaña Network, limpia los registros. Luego usa la herramienta para hacer una fusión de PDF.

  • Local real: La pestaña Network debería tener cero solicitudes POST/PUT (excepto el HTML/CSS/JS de primera carga de la página)
  • Local falso: Verás solicitudes de subida yendo a un dominio extranjero (/api/upload.pdf y similares)

Paso 2: Prueba de Desconexión del Cortafuegos

Desconecta tu red (modo avión o desconecta el cable), luego haz una fusión de PDF con la herramienta.

  • Local real: Funciona completamente normal, genera el nuevo PDF
  • Local falso: Error de “conexión de red fallida”

Paso 3: Lee el Código (para Ingenieros)

Presiona F12, cambia a la pestaña Sources, busca la función de procesamiento de PDF (mergePdf o splitPdf). Si el cuerpo de la función no tiene llamadas fetch( o XMLHttpRequest, es puramente frontend. Si las tiene, busca esas URLs de fetch y ve si van a tu propio dominio — si van a *.example.com, subió.

3 Casos Especiales a Vigilar

Caso Especial 1: Extensiones de Chromium

Si la herramienta es una extensión del navegador (Chrome Extension, Firefox Add-on), su “procesamiento local” depende de los permisos de red de la propia extensión. Verifica la configuración de la extensión: Algunas extensiones tienen por defecto permisos <all_urls>, así que incluso sin subidas, leen tus páginas.

Caso Especial 2: El PDF Ya Está en la Nube

Si el PDF que estás procesando se descargó de Google Drive o Dropbox (una URL temporal), entonces después de que el “procesamiento local” se complete, los registros de acceso de la URL temporal siguen en el lado de Google/Dropbox. Esto no es culpa de la herramienta, pero tenlo en cuenta.

Caso Especial 3: Complementos del Lector de PDF

Algunos lectores de PDF (Adobe Reader DC) tienen una función de “Compartir rápido” que hace ping a los servidores de Adobe cuando abres un archivo. No relacionado con la herramienta, pero el acto de abrir un PDF puede que ya filtre datos.

Prácticas Recomendadas

  1. PDFs sensibles → herramientas locales — contratos, registros médicos, escaneos de DNI, siempre usa una herramienta puramente frontend (recomendamos nuestras propias Herramientas PDF, pero cualquier herramienta puramente frontend sirve).
  2. PDFs no sensibles → las herramientas en la nube están bien — agendas de reuniones públicas, artículos públicos, libros de texto — las herramientas en la nube no son problema.
  3. Vacía tus cuentas de herramientas en la nube anualmente — si has usado cuentas de ilovepdf o smallpdf, pueden tener historial de subidas. Inicia sesión, revisa “Mis archivos”, elimínalos tú mismo.
  4. PDFs importantes — nunca pulses un botón de “compartir en redes sociales” — estas herramientas casi todas procesan en la nube.

Construimos Herramientas PDF porque esto nos importa personalmente, no porque pensemos que otros lo hacen mal. Genuinamente queremos darle a todos una opción de procesamiento de PDF “sin necesidad de confiar”.