Autenticação Digest: o que é e por que caiu em desuso

Programação

Autenticação Digest: o que é e por que caiu em desuso

A Autenticação Digest surgiu como uma evolução direta da Autenticação Básica, resolvendo justamente o problema mais grave dela: o envio da senha em texto legível (mesmo que codificado). Na Digest, a senha nunca trafega pela rede, nem mesmo de forma disfarçada.

O funcionamento é um pouco mais elaborado. O servidor envia um valor único chamado nonce a cada tentativa de acesso. O cliente, então, combina usuário, senha, esse nonce e outros dados usando uma função de hash (tradicionalmente MD5), e envia apenas o resultado desse cálculo. O servidor faz o mesmo cálculo do seu lado e compara os resultados.

Um exemplo básico de validação em PHP, usando o suporte nativo da linguagem a esse tipo de cabeçalho, seria assim:

<?php
$realm = 'Area Restrita Digest';

if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Digest realm="' . $realm .
        '",qop="auth",nonce="' . uniqid() . '",opaque="' . md5($realm) . '"');
    exit('Autenticacao necessaria.');
}

// A partir daqui o servidor precisa fazer o parse do cabeçalho
// PHP_AUTH_DIGEST e recalcular o hash esperado para comparar
// com o valor enviado pelo cliente.

Apesar de ser mais seguro que o Basic Auth em relação ao envio da senha, o Digest tem problemas próprios: depende do algoritmo MD5, considerado fraco para os padrões atuais, e a implementação correta é bem mais trabalhosa, o que abre espaço para erros de configuração.

Com a popularização do HTTPS, que já criptografa toda a comunicação entre cliente e servidor, a vantagem do Digest perdeu grande parte do sentido. Hoje ele sobrevive principalmente em sistemas legados, protocolos de voz sobre IP (SIP) e alguns equipamentos de rede e IoT mais antigos.

Se você encontrar Digest Auth em um sistema que ainda mantém, vale considerar uma migração para tokens (JWT ou API Keys) sempre que for viável, já que oferecem mais flexibilidade e segurança com menos complexidade de implementação.

Fonte
Equipe Suadica

Veja também

Mais Dicas