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.)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top