Hoje é 09/09/25 - Dia da Velocidade; Dia do Administrador de Empresas; Dia do Veterinário;


22/11/2006
Trabalhando com senhas no SQL Server

Tipo de notícia: Desenvolvimento

1. Consideramos um banco que possui a tabela "Usuarios". Essa tabela possui os campos "id_usuario", "login_usuario" e "senha_usuario";

2. Como padrão, utilizamos o "id_usuario" como chave primária, e o "login_usuario" como UNIQUE CONSTRAINT (para evitar uma repetição de logins). Esses campos, respectivamente, são INT AUTOINCREMENT e VARCHAR(20);

3. Esse passo é BASTANTE importante. Ao invés de colocarmos o campo "senha_usuario" como VARCHAR ou outro tipo texto, deve-se colocá-lo como VARBINARY. Feito isso, a estrutura está pronta;

4. Agora é só manipular tudo via SQL. Quando for cadastrar um usuário, não se pode mais dar um INSERT normal, e sim, um INSERT do tipo:

Feito isso, será inserido um registro que receberá um código de auto-incremento no campo "id_usuario", com o login = Juary e com uma senha = 123456. Feito isso, o procedimento está concluido. Para tal, tente dar o seguinte comando:

Esse SELECT retornará o registro que você inseriu, entretanto, no campo "senha_usuario", ele retornará caracteres "loucos", de forma que você não poderá visualizar a senha nem dessa forma e nem utilizando o Enterprise Manager;

5. Provavelmente, caso fosse omitida essa parte, alguém tentaria fazer o seguinte comando:

Um comando como esse (que normalmente poderia ser realizado pra algum tipo de autenticação), não irá fucionar de forma nenhuma. A solução então para retornar os dados que foram inseridos através do INSERT é a seguinte:

Esse comando retornará com sucesso o registro requisitado.

Agora explicando o funcionamento. O campo VARBINARY, quando recebe aquele INSERT, o registro fica encriptado (PWDENCRYPT)no campo "senha_usuario", de forma que não se pode mais "desencriptar". Após isso, o comando CONVERT, transforma o texto em VARBINARY, o que torna impossível se visualizar a senha.

Como o que foi encriptado não se pode mais "desencriptar", utilizamos o comando PWDCOMPARE para COMPARAR o que foi digitado, ou seja, não se pode re-tranformar o que foi encriptado antes na senha original, e sim, apenas comparar a senha digitada pelo usuário, convertendo-a para VARBINARY. Se isso for VERDADEIRO (por isso o "=1" no SELECT), o SELECT é realizado retornando o registro, de forma que você pode manipulá-lo da forma que desejar.

Como nem o Admin tem acesso à senha, pode-se apenas implementar uma atualização de senha (que, lógico, apenas o Admin poderia fazer com os usuários, e o usuário com si próprio), que seria da seguinte maneira, utilizando o exemplo citado:

Dessa forma, o usuário Juary teria a senha mudada.

Esse procedimento simples faz com que o banco de dados se torne mais seguro já que a senha não pode ser visualizada (apenas alterada). E, obviamente, a função de ser alterar a senha, só deve ser disponibilizada para as pessoas certas...

 



Notícias

Data Título
Cursos online do Conexão Cerveja Brasil 30/08/2025 Cursos online do Conexão Cerveja Brasil
5º Agrofest São Gonçalo 2025 28/07/2025 5º Agrofest São Gonçalo 2025
Fequaju 2025 02/07/2025 Fequaju 2025
FINECAP 2025 09/06/2025 FINECAP 2025
Programação completa do Pingo da Mei Dia 2025 05/06/2025 Programação completa do Pingo da Mei Dia 2025
Abracerva divulga as melhores cervejas do Nordeste do Brasil de 2025 19/05/2025 Abracerva divulga as melhores cervejas do Nordeste do Brasil de 2025
Pint of Science Natal 2025 19/05/2025 Pint of Science Natal 2025
Expo Seridó 2025 18/05/2025 Expo Seridó 2025
Festival Gastronômico e Cultural de Martins 2025 18/05/2025 Festival Gastronômico e Cultural de Martins 2025
São João de Gravatá 2025 05/05/2025 São João de Gravatá 2025
Festa de Santana de Caicó 2025 01/05/2025 Festa de Santana de Caicó 2025
São João Arretado de Carpina 2025 23/04/2025 São João Arretado de Carpina 2025