Pregunta

Dado un sistema de inicio de sesión simple (registrarse e inicio de sesión), cuál de las dos opciones es más segura:

  • Uso de archivos htaccess y htpasswd para almacenar y autenticar a los usuarios
  • Usar PHP para Crud y MySQL (o cualquier otra base de datos realmente) para almacenar la información

La información del usuario consiste puramente de nombre de usuario-password.

Por supuesto, se supone que el mejor caso se contabiliza con ambas opciones: las inyecciones de MySQL se tienen en cuenta, la contraseña es MD5/SHA1/MD5+SHA1/cualquier otro medio encriptado, etc.

En caso de que se pregunte, en el primer caso, PHP agregará credenciales de usuario al archivo htpasswd. (ver este Pregunta para una implementación de ejemplo).

¿Fue útil?

Solución

Diría siempre el formulario de inicio de sesión (por el cual supongo que te refieres a la autenticación estándar basada en la sesión).

  • .htaccess La autenticación transmite la contraseña en cada solicitud (por supuesto, SSL ayudaría aquí)

  • .htaccess La autenticación no tiene ninguna tasa de limitación / protección de fuerza bruta de forma predeterminada en Apache

  • Iniciar sesión desde .htaccess autenticación es un perra

Otros consejos

Casi no hay diferencia entre las 2 formas en términos de seguridad en el vuelo. Pero las preocupaciones de Pekka son válidas. Si solo desea usar HTTP Basic Auth (es decir, el cuadro emergente) en lugar de un formulario de inicio de sesión, puede hacerlo a través de PHP. buscando $_SERVER['PHP_AUTH_USER'] Y si no encuentra que envíe una respuesta 401 como:

    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
    }

De esta manera, puede hacer la detección de límite de velocidad/fuerza bruta. Establezca una sesión, para que las contraseñas no se envíen con cada solicitud, y haga que registrar al usuario y rastrearlas mucho más fácilmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top