Mi piacerebbe sapere quali sono le migliori pratiche per la protezione delle sezioni di amministrazione dei siti Web, in particolare da un punto di vista di autenticazione / accesso.
Ovviamente ci sono cose ovvie, come l'utilizzo di SSL e la registrazione di tutti gli accessi, ma mi chiedo dove sopra questi passaggi di base le persone considerano la barra da impostare.
Per esempio:
- Stai solo facendo affidamento sullo stesso meccanismo di autenticazione che usi per gli utenti normali? Se no, cosa?
- Stai eseguendo la sezione Admin nello stesso "dominio dell'applicazione"?
- Quali passi fai per rendere la sezione di amministrazione non scoperta? (o rifiuti l'intera faccenda dell'oscurità)
Finora, i suggerimenti dei rispondenti includono:
- Introdurre una pausa artificiale lato server in ogni controllo della password amministratore per prevenire attacchi di forza bruta [Developer Art]
- Utilizza pagine di accesso separate per utenti e amministratori utilizzando la stessa tabella DB (per interrompere XSRF e il furto di sessioni concedendo l'accesso alle aree di amministrazione) [Thief Master]
- Considera anche l'aggiunta dell'autenticazione nativa del server web all'area di amministrazione (ad es. Tramite .htaccess) [Thief Master]
- Considera l'idea di bloccare l'IP degli utenti dopo una serie di tentativi di accesso amministratore falliti [Thief Master]
- Aggiungi captcha dopo tentativi di accesso amministratore falliti [Thief Master]
- Fornire meccanismi altrettanto potenti (utilizzando le tecniche di cui sopra) per utenti e amministratori (ad esempio, non trattare gli amministratori in modo speciale) [Lo'oris]
- Considera l'autenticazione di secondo livello (ad es. Certificati client, smart card, spazio per schede e così via) [JoeGeeky]
- Consenti l'accesso solo da IP / domini affidabili, aggiungi il controllo alla pipeline HTTP di base (tramite ad esempio HttpModules) se possibile. [JoeGeeky]
- [ASP.NET] Blocca IPrincipal e Principal (rendili immutabili e non enumerabili) [JoeGeeky]
- Elevazione dei diritti federati: ad esempio, inviare un'e-mail ad altri amministratori quando i diritti di un amministratore vengono aggiornati. [JoeGeeky]
- Considera i diritti a grana fine per gli amministratori, ad esempio, anziché i diritti basati sui ruoli, definisci i diritti per le singole azioni per amministratore [JoeGeeky]
- Limita la creazione di amministratori: ad esempio, gli amministratori non possono modificare o creare altri account amministratore. Usa un client "superadmin" bloccato per questo. [JoeGeeky]
- Prendi in considerazione certificati SSL lato client o telecomandi di tipo RSA (token elettronici) [Daniel Papasian]
- Se si utilizzano i cookie per l'autenticazione, utilizzare cookie separati per le pagine admin e normali, ad esempio inserendo la sezione admin su un dominio diverso. [Daniel Papasian]
- Se pratico, considera di mantenere il sito di amministrazione su una sottorete privata, fuori dall'Internet pubblica. [John Hartsock]
- Riemettere i ticket di autenticazione / sessione quando ci si sposta tra i contesti di utilizzo normale / amministratore del sito web [Richard JP Le Guen]