Es este un método seguro, oop

<code>    $salt = $this->get_salt($username);

    if (is_null($salt)) {
        return FALSE;
    }

    $password = sha1(SITE_KEY . $password . $salt);
    $sth = $this->db->prepare("SELECT id, username, active FROM user WHERE username = ? AND password = ?");
    $sth->setFetchMode(PDO::FETCH_OBJ);
    $sth->execute(array($username, $password));

    if (($result = $sth->fetch()) !== FALSE) {
        return $result;
    }

    return FALSE;
</code>

Esto es lo que me preocupa:

No entendí mal el método de inicio de sesión. Simplemente no creo que deba devolver ese objeto. Puedo estar equivocado y lo que estás haciendo está perfectamente bien, pero lo dudo. Está devolviendo el objeto de usuario completo de la base de datos, la contraseña y todo, a un script potencialmente inseguro. Alguien podría crear un nuevo archivo y luego hacer algo como var_dump ($ userObject); y tener toda esa informacion

Además, me parece poco intuitivo devolver una propiedad "mágica" de algo. Es solo otra de esas cosas que no se verifican antes de ser utilizadas. Si moviera eso a un método separado en su clase de autenticación y haga que devuelva el valor de "activo", podría ejecutar cualquier verificación que necesite sin que el script login.php sea lo más inteligente.

: Lo miró de nuevo, y si bien ya tendría que conocer la información de inicio de sesión si tuviera que abusar de ese objeto de esa manera. Todavía es mejor, en mi opinión, separarlo en caso de que haya algún tipo de fuga. Sin decir que sé cómo alguien podría hacerlo. Solo piénsalo como un agujero de bucle menos potencial.

No pretendo entender cómo los usuarios malintencionados harían algo. Solo sé que hacer que sea más fácil para ellos hacerlo no parece sabio. Tal vez no haya nada malo en ello, no soy un experto en seguridad. Solo estoy hurgando en cosas que, si tuviera que escribirlo, cambiaría porque me parecen peligrosas. Si realmente desea saber si es peligroso o no, sugeriría enviar ese ejemplo a la comunidad de stackoverflow normal para ver lo que dicen.

¿Tiene algún punto de lo que está diciendo? El método sería usado en un controlador de página que tengo:

<code>$user = $auth->login('username, password)

if ($user) {
//do some additional checks... set session variables
}
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta