Todos os artigos

Basic Authentication: como funciona a forma mais simples de proteger um recurso HTTP

HTTP Basic Authentication é uma das formas mais antigas e simples de proteger um recurso com senha: o navegador pede usuário e senha, e eles são enviados ao servidor em toda requisição. Essa simplicidade é justamente o seu maior ponto fraco.

Como o cabeçalho Authorization é montado

Usuário e senha são unidos por dois-pontos (usuario:senha), e a string resultante é codificada em Base64 e colocada no cabeçalho Authorization: Basic <string_codificada>. O navegador reenvia esse cabeçalho automaticamente em toda requisição seguinte após o primeiro login bem-sucedido.

Por que Base64 não é segurança

Base64 é um esquema de codificação, não criptografia: qualquer pessoa consegue decodificar a string de volta para usuario:senha em segundos, sem precisar de chave nenhuma. Se a requisição for interceptada — numa rede Wi-Fi pública desprotegida, por exemplo — as credenciais ficam expostas na hora.

Acentos, cedilha e o tamanho do Base64

Base64 codifica bytes, não caracteres — por isso a codificação da string original importa. Uma letra sem acento ocupa 1 byte em UTF-8, mas caracteres como ã, ç, õ ou é, tão comuns em nomes e palavras do português, ocupam 2 bytes cada. Uma senha como São_Paulo123 ou José&Conceição gera um token Base64 proporcionalmente maior do que uma senha só com caracteres ASCII do mesmo tamanho. Antes da RFC 7617 (2015), a especificação original do Basic Auth nem sequer definia uma codificação de caracteres para usuário e senha, o que causava divergências entre clientes HTTP ao lidar com acentuação.

Para que serve

  • Proteger rapidamente um servidor de staging ou uma ferramenta interna com senha durante o desenvolvimento.
  • Montar um cabeçalho Authorization correto para testar uma API manualmente com curl ou Postman.
  • Entender por que usar Basic Auth em HTTP puro é considerado uma falha de segurança séria.

Basic Auth não tem logout nativo

O navegador armazena as credenciais em cache e adiciona automaticamente o cabeçalho Authorization em toda requisição seguinte para a mesma origem, até a aba ser fechada — o protocolo simplesmente não tem um botão "sair" padrão. Para forçar o logout, servidores recorrem a truques: retornar 401 propositalmente com um valor de realm diferente, ou depender de o usuário fechar todas as abas do navegador.

Experimentar a ferramenta