Tenemos una aplicación que se ejecuta fuera de una API privada. Tenemos un servidor que aloja la API, así como un panel de administración donde el personal puede iniciar sesión y realizar cambios en el contenido de la aplicación. La API y el panel de administración se ejecutan en el mismo dominio web. Supongamos que el dominio es appname.com
y las URL son appname.com/api
y appname.com/admin
Originalmente, no había páginas web públicas en el servidor o dominio. Sin embargo, agregamos una página de restablecimiento de contraseña en appname.com/resetpassword
para que los usuarios de la aplicación que hayan olvidado su contraseña puedan solicitar un correo electrónico de restablecimiento de contraseña.
Inmediatamente después de agregar la página de restablecimiento de contraseña, el jefe del proyecto (que no es una persona técnica) se preocupó de que colocar la página de restablecimiento de contraseña en el mismo dominio que la API y el sitio de administración podría exponer el servidor a los piratas informáticos, que podrían De lo contrario, no se debe tener en cuenta el dominio ya que no tiene otras páginas públicas. Nos pidieron que pusiéramos la página de restablecimiento de contraseña en un dominio diferente para que los hackers no supieran cómo encontrar el dominio principal.
Esta lógica no tiene sentido para mí, por varias razones:
- Nunca he visto a nadie más hacer algo similar a esto, aunque es difícil pensar en paralelos directos
- El nombre de dominio del backend no es difícil de adivinar, incluso cuando no hay páginas públicas en el sitio
- Si agregamos un sitio web público en el futuro, lógicamente se ubicará en el mismo dominio, en cuyo punto el dominio ya no sería un secreto de todos modos.
- Cualquier pirata informático lo suficientemente sofisticado como para romper las medidas de seguridad en el servidor podría encontrar fácilmente la URL de la API y, por lo tanto, el dominio del sitio, siguiendo los paquetes enviados desde la aplicación.
Sin embargo, el jefe del proyecto está convencido de que la página de restablecimiento de contraseña no puede estar en el dominio principal. Lo que me parece la solución más fácil es configurar un alias de dominio, algo como appname-passwordreset.com
, que apunta directa y exclusivamente a la página de restablecimiento de contraseña. Sin embargo, ¿esto nos comprará algo? appname.com
y appname-passwordreset.com
tendrían la misma dirección IP. ¿El uso de este último alias evitaría de manera realista que un pirata informático encuentre o se introduzca en el servidor?
Nota: me doy cuenta de que una alternativa es permitir que el usuario solo solicite un correo electrónico para restablecer la contraseña desde la aplicación. Sin embargo, el correo electrónico de restablecimiento de contraseña debe tener un enlace a una página web, lo que nos lleva de vuelta al problema original