Este é um 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>

Isso é o que me preocupa:

Eu não entendi mal o método de login. Eu não acho que deva devolver esse objeto. Eu posso estar errado e o que você está fazendo está perfeitamente bem, mas duvido. Você está retornando o objeto de usuário completo do banco de dados, senha e tudo, para um script potencialmente inseguro. Alguém poderia potencialmente criar um novo arquivo e então fazer algo como var_dump ($ userObject); e ter toda essa informação

Além disso, eu apenas acho que não é intuitivo retornar uma propriedade "mágica" de alguma coisa. É apenas mais uma daquelas coisas que não são verificadas antes de serem usadas. Se você fosse movê-lo para um método separado em sua classe auth e fazer com que ele retornasse o valor de "ativo", você poderia executar qualquer verificação que precisasse sem que seu script login.php fosse mais sábio.

: Olhou de novo, e enquanto você já precisaria saber as informações de login se você abusasse desse objeto dessa maneira. Ainda é melhor, na minha opinião, separá-lo caso haja algum tipo de vazamento. Não estou dizendo que sei como alguém seria capaz de fazer isso. Apenas pense nisso como um buraco menos potencial.

Eu não pretendo entender como os usuários mal-intencionados fariam alguma coisa. Eu só sei que facilitar isso para eles não parece sábio. Talvez não haja nada de errado com isso, não sou especialista em segurança. Estou apenas cutucando coisas que, se eu fosse escrever, mudaria porque elas me parecem perigosas. Se você realmente deseja saber se é perigoso ou não, sugiro enviar esse exemplo para a comunidade regular do stackoverflow para ver o que eles dizem.

Ele tem algum ponto do que ele está dizendo? O método seria usado em um controlador de página que eu tenho:

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

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

questionAnswers(2)

yourAnswerToTheQuestion