Post actualizado el día octubre 29, 2026 by DeiviSanzPlay
Hay una idea que circula cada vez que alguien pregunta cómo enseñar su proyecto local: que XAMPP compartir sitio con ngrok es una solución «privada» porque la URL lleva una cadena aleatoria. Falso. Ngrok expone tu Apache a internet, y cualquiera con ese enlace entra sin pedir contraseña. La aleatoriedad del subdominio no es un control de acceso, es solo una dirección difícil de adivinar. Y los escáneres de URLs no adivinan: las reciben en logs, foros y filtraciones.
Lo he visto en carne propia. Un cliente compartió su tienda PrestaShop en XAMPP con un enlace de ngrok en un grupo de Slack de proveedores. En cuestión de horas empezaron peticiones raras a /wp-login.php y a rutas de phpMyAdmin. No era un ataque dirigido: eran bots que rastrean dominios ngrok-free.app buscando paneles abiertos. El mito del enlace secreto se rompió solo.
Por qué la URL aleatoria no protege tu Apache
Ngrok crea un túnel desde su servidor hasta el puerto 80 u 443 de tu XAMPP. Todo lo que llega a ese subdominio se reenvía a tu htdocs. Si tu phpMyAdmin no tiene contraseña de root (configuración por defecto de XAMPP en muchos tutoriales), estás sirviendo tu base de datos al mundo. El túnel no añade autenticación: solo transporte.
Esto no funciona para entornos con datos reales de clientes. Tampoco para un WordPress con plugins desactualizados. Ngrok gratuito además muestra una página de advertencia intermedia, lo que rompe APIs y webhooks: si estás probando una integración de pago, el receptor verá ese aviso y fallará.
El caso donde sí tiene sentido: demos efímeras sin datos
Hay un escenario legítimo para compartir un sitio XAMPP con ngrok: mostrar un tema estático a un cliente durante quince minutos. Sin base de datos real, sin formularios activos, sin admin expuesto. En ese caso, el túnel es cómodo. Pero conviene protegerlo igualmente con ngrok http 80 –basic-auth=»demo:clave», que añade una capa de autenticación HTTP antes de llegar a Apache.
Otra limitación: ngrok gratuito cambia la URL cada vez que reinicias el proceso. Si el cliente guarda el enlace, mañana no funciona. Para sesiones de revisión esto obliga a reenviar el link constantemente. La versión de pago con dominio reservado resuelve esto, pero entonces ya estás pagando por algo que un hosting de staging barato cubre mejor.
Alternativas que evitan el problema de raíz
Si el objetivo es enseñar el sitio, un despliegue en un subdominio de staging con HTTPS y contraseña básica es más honesto. Herramientas como Laravel Valet o DDEV ofrecen túneles propios, y Cloudflare Tunnel permite cerrar el acceso con Cloudflare Access. La documentación oficial de ngrok y la de Apache explican estas capas, aunque rara vez se leen antes de pegar el comando.
Mi recomendación: usa ngrok para demos sin datos y con contraseña, nunca como sustituto de un entorno de pruebas real. El mito de que «nadie encontrará mi URL» es exactamente eso, un mito. Y en cuanto tu XAMPP sirve algo con valor, el enlace deja de ser un atajo y se convierte en una puerta abierta.
Perfiles verificables: Sitio web
Publicado el 29 de October de 2026. Última revisión: 29 de October de 2026.