Guía

Cómo proteger con contraseña un sitio web o una app web

Respuesta rápida

Activa la función de contraseña del hosting: Password Protection en Vercel Pro ($20 al mes por proyecto) o Netlify Pro, una política de Cloudflare Access delante del sitio, o autenticación básica HTTP en tu propio servidor. La contraseña la tiene que revisar el hosting, no el código del sitio.

Una contraseña compartida sirve para mostrarle un borrador a un cliente. Para una herramienta que tus compañeros usan todos los días, funciona mejor el inicio de sesión de la empresa. Abajo están los pasos para cada hosting y luego la diferencia entre las dos cosas.

Última actualización Escrito por TeamOnly. Hacemos un hosting con inicio de sesión de la empresa, así que cada precio y paso de abajo enlaza a las propias páginas del proveedor.

01Por hosting

¿Dónde puedo poner una contraseña y cuánto cuesta?

Todos los hostings comunes lo permiten. La diferencia está en el plan que necesitas y en si los visitantes escriben una contraseña compartida o inician sesión con su propia cuenta.

Protección con contraseña en hostings comunes, revisado el 25 de octubre de 2026
HostingCómo funcionaPlan que necesitasCosto
VercelPassword Protection: una contraseña por proyectoPro o Enterprise. No en Hobby$20 al mes por proyecto protegido en Pro, más el plan Pro
NetlifyContraseña para todo el sitio, o autenticación básica en un archivo _headersPro o Enterprise. No en Free ni PersonalPro cuesta $20 al mes, miembros ilimitados
Cloudflare AccessCada persona recibe un PIN de un solo uso por correo, o inicia sesión con tu proveedor de identidadTu dominio en CloudflareGratis hasta 50 usuarios, luego $7 por usuario al mes, con facturación anual
Cloudflare WorkerAutenticación básica HTTP escrita en el WorkerCualquier plan de WorkersGratis hasta 100,000 solicitudes al día. El plan pago empieza en $5 al mes
Tu propio servidorAutenticación básica HTTP en nginx o ApacheNingunoGratis en un servidor que ya tienes

Revisado el 25 de octubre de 2026. Fuentes: Vercel Password Protection, Vercel Deployment Protection, changelog de Vercel, 9 de septiembre de 2026, Vercel pricing, Netlify password protection, Netlify basic authentication, Netlify pricing, Cloudflare Access plans, Cloudflare one-time PIN, Cloudflare self-hosted applications, Cloudflare Workers basic auth example, Workers pricing, nginx basic authentication, Apache authentication.

02Paso a paso

Cómo activarla, hosting por hosting

Elige el hosting donde está tu sitio. Cada uno toma unos minutos.

Vercel

  1. Abre el proyecto en el panel de Vercel y ve a Settings y luego a Deployment Protection.
  2. En Password Protection, activa el interruptor.
  3. Elige qué proteger. Standard Protection deja abierto tu dominio de producción, así que elige All Deployments para cubrir también la dirección principal.
  4. Escribe una contraseña y selecciona Save. Los visitantes la escriben una vez por despliegue, y una cookie la recuerda.

Cuánto cuesta Solo en el plan Pro: $20 al mes por cada proyecto protegido. Incluida en Enterprise, no disponible en Hobby.

La opción gratis en todos los planes es Vercel Authentication, que ahora cubre también producción. Los visitantes inician sesión con una cuenta de Vercel que tenga acceso al proyecto, así que cada compañero necesita una.

Netlify

  1. Abre el sitio y ve a Project configuration, General, Visitor access, Password Protection.
  2. Selecciona Configure Password Protection, luego Basic password protection, y escribe la contraseña.
  3. Selecciona All deploys para cubrir el sitio en línea además de las vistas previas, y luego Save.
  4. En los planes Pro más nuevos basados en créditos, la misma opción está en Visitor access, Project visibility: elige Password.
/*  Basic-Auth: dana:a-long-password sam:another-long-password

Cuánto cuesta Plan Pro ($20 al mes, miembros ilimitados) o Enterprise. No disponible en Free ni Personal.

Para un usuario y contraseña en una parte del sitio, Pro y Enterprise también aceptan una regla Basic-Auth en un archivo _headers, como la de abajo. Netlify aclara que la autenticación básica no tiene forma de cerrar sesión.

Cloudflare Access

  1. Tu dominio tiene que estar en Cloudflare. En el panel, ve a Zero Trust, Integrations, Identity providers, y agrega One-time PIN.
  2. Ve a Access controls, Applications, selecciona Create new application, luego Self-hosted and private, y agrega el nombre de host de tu sitio.
  3. Agrega una política Allow. Usa Emails ending in con @yourcompany.com para toda una empresa, o Emails para personas con nombre. Access rechaza a todos los demás por defecto.
  4. Selecciona Create. Los visitantes escriben su correo, reciben un PIN que sirve una sola vez durante 10 minutos, y entran.

Cuánto cuesta Gratis hasta 50 usuarios, luego $7 por usuario al mes, con facturación anual.

No es una contraseña compartida: cada persona demuestra que lee su propia bandeja de entrada, así que puedes ver y quitar a las personas una por una.

Un Cloudflare Worker con autenticación básica

  1. Parte del ejemplo de autenticación básica de Cloudflare para Workers. Le pide al navegador un usuario y una contraseña y los compara de una forma que no filtra la contraseña por el tiempo de respuesta.
  2. Guarda la contraseña como secreto, no en el código, con el comando de abajo.
  3. Sírvelo solo por HTTPS. De lo contrario, la autenticación básica envía la contraseña sin cifrar.
npx wrangler secret put PASSWORD

Cuánto cuesta Workers Free cubre 100,000 solicitudes al día. Workers Paid empieza en $5 al mes.

Cloudflare indica que su ejemplo no es apto para producción y recomienda Cloudflare Access en su lugar.

Tu propio servidor

  1. Instala la herramienta htpasswd (paquete apache2-utils en Debian y Ubuntu, httpd-tools en Red Hat) y crea un archivo de contraseñas con una línea por persona.
  2. En nginx, agrega auth_basic y auth_basic_user_file al sitio, como abajo. En Apache, usa AuthType Basic, AuthUserFile y Require valid-user.
  3. Guarda el archivo de contraseñas fuera de la carpeta web, y usa HTTPS. La documentación de Apache advierte que la autenticación básica envía la contraseña sin cifrar.
sudo htpasswd -c /etc/apache2/.htpasswd dana

# nginx
location / {
    auth_basic           "Staff only";
    auth_basic_user_file /etc/apache2/.htpasswd;
}

Cuánto cuesta Gratis en un servidor que ya tienes.

La autenticación básica puede guardar una contraseña distinta para cada persona, lo cual es mejor que una sola contraseña compartida. Igual tienes que agregar y quitar personas a mano en el servidor.

03Contraseña compartida o inicio de sesión

¿Cuándo alcanza con una contraseña?

Una contraseña compartida sirve para

  • Un borrador o una demo para un cliente o alguien de fuera de la empresa, por unos días.
  • Una copia de prueba de un sitio público que todavía no quieres que aparezca en buscadores.
  • Cualquier cosa donde no importa quién la vio, solo que no la vieran desconocidos.

04Lado a lado

Contraseña compartida vs. inicio de sesión de la empresa

El inicio de sesión de la empresa significa que cada persona entra con la cuenta de trabajo que tu empresa ya le da: Google, Microsoft o un código enviado a su correo de trabajo.

Una contraseña compartida comparada con el inicio de sesión de la empresa para una herramienta interna
PreguntaContraseña compartidaInicio de sesión de la empresa
Quién entraCualquiera que tenga la contraseña, la haya conseguido donde seaSolo personas con una cuenta en el dominio de correo de tu empresa
Quitar a una personaCambiar la contraseña y mandarle la nueva a todos los demásSacarla de la lista, o desactivar su cuenta de trabajo cuando se va
Saber quién la usóNo. Para la app, todos se ven igualesSí. La app recibe el nombre y el correo de cada persona
Si se filtraLe sirve a quien la encuentre, en un chat, un correo o una captura de pantallaNo hay nada que filtrar. Un desconocido necesitaría una cuenta activa en tu empresa
Costo$20 al mes por proyecto en Vercel Pro. Un plan Pro en Netlify. Gratis en tu propio servidorGratis hasta 50 usuarios en Cloudflare Access, si lo configuras tú. $19 al mes en TeamOnly, con hosting incluido

05Inicio de sesión de la empresa, incluido

Cómo poner una app interna detrás del inicio de sesión de la empresa con TeamOnly

Si el sitio en realidad es una herramienta interna, puedes olvidarte de la contraseña. TeamOnly aloja la app y revisa el inicio de sesión de tu empresa antes de que cargue cualquier parte.

  1. Empieza gratis con tu correo de trabajo

    Pruébalo gratis 14 días, sin tarjeta. Después, Builder cuesta $19 al mes para un creador y hasta tres apps. El dominio de correo de tu empresa se convierte en la puerta.

  2. Ejecuta npx teamonly init en tu proyecto

    Agrega instrucciones para Claude Code y Cursor, y la pequeña librería que usa tu app para la persona que inició sesión, la base de datos y los archivos.

  3. Inicia sesión y publica

    Ejecuta npx teamonly login una vez y luego npx teamonly deploy. Recibes un enlace como expenses.acme.teamonly.app.

  4. Manda el enlace

    Tus compañeros inician sesión con su cuenta de trabajo de Google o Microsoft, o con un código enviado a su correo de trabajo. Puedes limitarla a personas con nombre con npx teamonly access only dana@acme.com.

06Preguntas

Lo que la gente pregunta

Todas las preguntas y respuestas

¿Cómo protejo un sitio web con contraseña gratis?

En tu propio servidor, la autenticación básica HTTP no cuesta nada. En Cloudflare, Access es gratis hasta 50 usuarios y puede mandarle a cada persona un PIN de un solo uso por correo, pero tu dominio tiene que estar en Cloudflare. El plan Hobby de Vercel y los planes Free y Personal de Netlify no ofrecen protección con contraseña.

¿Cuánto cuesta la protección con contraseña de Vercel?

En el plan Pro cuesta $20 al mes por cada proyecto que proteges, además del propio Pro. Está incluida en Enterprise y no está disponible en Hobby. Vercel Authentication es gratis en todos los planes, pero los visitantes necesitan una cuenta de Vercel con acceso al proyecto.

¿Netlify tiene protección con contraseña en el plan gratis?

No. La documentación de Netlify dice que la protección con contraseña no está disponible en los planes Free y Personal. Sí está en Pro, que cuesta $20 al mes con miembros ilimitados, y en Enterprise.

¿Puedo proteger una app de React con contraseña?

Sí, pero no desde dentro de React. Todo lo que está en tu código de React se envía al navegador, así que una revisión de contraseña ahí se puede leer y saltar. Pon la contraseña en el hosting (Vercel, Netlify, Cloudflare o tu servidor), para que nada cargue hasta que se escriba.

¿Una contraseña compartida es bastante segura para una herramienta interna?

Deja fuera a desconocidos y buscadores. No te dice quién usa la herramienta, y no puedes quitarle el acceso a una persona sin cambiarlo para todos. Para una herramienta que tus compañeros usan todos los días, un inicio de sesión con la cuenta de trabajo de cada persona es la opción más segura.

¿Puedo proteger con contraseña un sitio web público con TeamOnly?

No. TeamOnly es solo para apps internas a las que tus compañeros entran con su cuenta de trabajo. No se permiten sitios públicos. Para un sitio público con contraseña, usa uno de los hostings de esta página.

Acceso anticipado

Olvídate de la contraseña compartida para las herramientas de tu equipo

Builder cuesta $19 al mes. Tus compañeros inician sesión con su cuenta de trabajo, y nadie más entra.

Prueba gratis 14 díasO suscríbete ahora

Sin tarjeta para la prueba. Después, desde $19 al mes, cancela cuando quieras.

¿Aún no? Recibe novedades

Usa tu correo de trabajo. Escribimos poco, y solo cuando hay algo que valga la pena contar.

Escribe tus preguntas a hello@teamonly.dev y te responde una persona.