Eu gostaria de saber o que as pessoas consideram a prática recomendada para proteger as seções Admin de sites, especificamente do ponto de vista de autenticação / acesso.
Claro que há coisas óbvias, como usar SSL e registrar todo o acesso, mas estou me perguntando onde, acima dessas etapas básicas, as pessoas consideram a barreira a ser definida.
Por exemplo:
- Você está contando apenas com o mesmo mecanismo de autenticação que usa para usuários normais? Se não, o quê?
- Você está executando a seção Admin no mesmo 'domínio de aplicativo'?
- Quais etapas você executa para tornar a seção administrativa desconhecida? (ou você rejeita toda a coisa de 'obscuridade')
Até agora, as sugestões dos respondentes incluem:
- Introduzir uma pausa artificial do lado do servidor em cada verificação de senha de administrador para evitar ataques de força bruta [Arte do desenvolvedor]
- Use páginas de login separadas para usuários e admin usando a mesma tabela de banco de dados (para impedir o XSRF e o roubo de sessão que concede acesso às áreas administrativas) [Thief Master]
- Considere também adicionar autenticação nativa do servidor da web à área administrativa (por exemplo, via .htaccess) [Thief Master]
- Considere bloquear o IP de usuários após uma série de tentativas de login de administrador malsucedidas [Thief Master]
- Adicionar captcha após falhas nas tentativas de login de administrador [Thief Master]
- Fornece mecanismos igualmente fortes (usando as técnicas acima) para usuários e administradores (por exemplo, não trate os administradores de maneira especial) [Lo'oris]
- Considere a autenticação de segundo nível (por exemplo, certificados de cliente, cartões inteligentes, cardspace, etc.) [JoeGeeky]
- Permita apenas o acesso de IPs / domínios confiáveis, adicione a verificação ao pipeline HTTP básico (por exemplo, HttpModules) se possível. [JoeGeeky]
- [ASP.NET] Bloqueie IPrincipal & Principal (torne-os imutáveis e não enumeráveis) [JoeGeeky]
- Federar Elevação de Direitos - por exemplo, enviar e-mail para outros administradores quando os direitos de algum administrador forem atualizados. [JoeGeeky]
- Considere direitos refinados para administradores - por exemplo, em vez de direitos baseados em funções, defina direitos para ações indicativas por administrador [JoeGeeky]
- Restrinja a criação de administradores - por exemplo, os administradores não podem alterar ou criar outras contas de administrador. Use um cliente 'superadmin' bloqueado para isso. [JoeGeeky]
- Considere certificados SSL do lado do cliente ou keyfobs do tipo RSA (tokens eletrônicos) [Daniel Papasian]
- Se usar cookies para autenticação, use cookies separados para páginas administrativas e normais, por exemplo, colocando a seção de administração em um domínio diferente. [Daniel Papasian]
- Se for prático, considere manter o site de administração em uma sub-rede privada, fora da Internet pública. [John Hartsock]
- Emita novamente tíquetes de autenticação / sessão ao alternar entre contextos de uso administrativo / normal do site [Richard JP Le Guen]