Me gustaría saber cuáles son las mejores prácticas que la gente considera para proteger las secciones de administración de los sitios web, específicamente desde un punto de vista de autenticación / acceso.
Por supuesto, hay cosas obvias, como usar SSL y registrar todos los accesos, pero me pregunto dónde, por encima de estos pasos básicos, la gente considera que se debe establecer la barra.
Por ejemplo:
- ¿Solo confía en el mismo mecanismo de autenticación que usa para los usuarios normales? Si no, que?
- ¿Está ejecutando la sección de administración en el mismo 'dominio de aplicación'?
- ¿Qué pasos debe seguir para que no se descubra la sección de administración? (o rechazas todo el asunto de la 'oscuridad')
Hasta ahora, las sugerencias de quienes respondieron incluyen:
- Introduzca una pausa artificial del lado del servidor en cada verificación de contraseña de administrador para evitar ataques de fuerza bruta [Diseño del desarrollador]
- Utilice páginas de inicio de sesión separadas para usuarios y administradores que utilicen la misma tabla de base de datos (para detener el robo de sesiones y XSRF que otorgan acceso a las áreas de administración) [Thief Master]
- Considere también agregar autenticación nativa del servidor web al área de administración (por ejemplo, a través de .htaccess) [Thief Master]
- Considere bloquear la IP de los usuarios después de varios intentos fallidos de inicio de sesión de administrador [Thief Master]
- Agregar captcha después de intentos fallidos de inicio de sesión de administrador [Thief Master]
- Proporcione mecanismos igualmente sólidos (utilizando las técnicas anteriores) tanto para los usuarios como para los administradores (por ejemplo, no trate a los administradores de manera especial) [Lo'oris]
- Considere la autenticación de segundo nivel (por ejemplo, certificados de cliente, tarjetas inteligentes, espacio de tarjetas, etc.) [JoeGeeky]
- Solo permita el acceso desde direcciones IP / dominios confiables, agregue una verificación a la canalización HTTP básica (a través de, por ejemplo, HttpModules) si es posible. [JoeGeeky]
- [ASP.NET] Bloquear IPrincipal y Principal (hacerlos inmutables y no enumerables) [JoeGeeky]
- Elevación de derechos federados: por ejemplo, envíe un correo electrónico a otros administradores cuando se actualicen los derechos de cualquier administrador. [JoeGeeky]
- Considere los derechos específicos para los administradores, por ejemplo, en lugar de los derechos basados en roles, defina derechos para acciones individuales por administrador [JoeGeeky]
- Restrinja la creación de administradores, por ejemplo, los administradores no pueden cambiar ni crear otras cuentas de administrador. Utilice un cliente "superadmin" bloqueado para esto. [JoeGeeky]
- Considere los certificados SSL del lado del cliente o llaveros de tipo RSA (tokens electrónicos) [Daniel Papasian]
- Si usa cookies para la autenticación, use cookies separadas para las páginas normales y de administración, por ejemplo, colocando la sección de administración en un dominio diferente. [Daniel Papasian]
- Si es práctico, considere mantener el sitio de administración en una subred privada, fuera de la Internet pública. [John Hartsock]
- Vuelva a emitir tickets de sesión / autenticación al moverse entre contextos de uso normal o de administración del sitio web [Richard JP Le Guen]
fuente