pagina di login vs. htpasswd - che è più sicuro?
Domanda
Dato un sistema semplice di login (registrarsi ed effettuare il login), quale delle due scelte è più sicuro:
- Utilizzo dei file htaccess e htpasswd per archiviare e autenticare gli utenti
- Utilizzo di PHP per CRUD e MySQL (o qualsiasi altro database in realtà) per memorizzare le informazioni
Info utenti consiste puramente di nome utente-password.
Naturalmente, nel caso migliore si presume per entrambe le opzioni: iniezioni MySQL sono contabilizzati, la password è md5 / sha1 / md5 + sha1 / altri mezzi criptati, etc
.Nel caso in cui vi state chiedendo, nel primo caso, php aggiungerà credenziali utente al file htpasswd. (Vedi questa domanda per un esempio di implementazione.)
Soluzione
direi sempre il modulo di login (per cui presumo si intende l'autenticazione basata sulla sessione standard).
-
.htaccess
autenticazione trasmette la password su ogni richiesta (Naturalmente, SSL aiuterebbe qui) -
autenticazione
.htaccess
non ha alcuna protezione rate limiting / forza bruta di default in Apache -
logout da
.htaccess
autenticazione è un cagna
Altri suggerimenti
Non c'è praticamente alcuna differenza tra i 2 modi in termini di sicurezza in volo. ma le preoccupazioni di Pekka sono tutti validi. Se si desidera utilizzare HTTP Auth di base (cioè la finestra di popup) in contrapposizione a un form di login, è possibile farlo tramite PHP. con la ricerca di $_SERVER['PHP_AUTH_USER']
e se non lo trovate inviare indietro un 401 risposta come:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="MY REALM"');
header('HTTP/1.0 401 Unauthorized');
echo 'Please Contact us if you are having problems logging in';
exit;
} else {
//not their first time through
//check their username and password here
$username = trim($_SERVER['PHP_AUTH_USER']);
$password = trim($_SERVER['PHP_AUTH_PW']);
//do login
}
In questo modo si può fare limite di velocità / bruta forza di rilevamento. Impostare una sessione, in modo che le password non viene inviato con ogni richiesta, e rende la registrazione l'utente fuori e li tracciamento modo più semplice.