Ir para o conteúdo
cutty.dev
All posts

Segurança de links com senha — o que acontece quando você clica

Você pode adicionar uma senha ao seu link curto. Mostramos o que acontece por baixo — sem entrar em jargões — e por que vale a pena.

Metade dos tutoriais sobre links com senha começam com a frase de que isso é uma "camada adicional de segurança". E param por aí. Na minha opinião, esta é justamente a coisa menos importante que se pode dizer sobre isso.

Pois a "camada de segurança" não explica nada. Não diz o que acontece com essa senha, quem a vê, nem quando ela faz sentido. E estas são as únicas perguntas que vale a pena fazer antes de clicar em "Adicionar senha".

Então, um por um.

A senha no link não é a mesma coisa que o cadeado no portão

As pessoas imaginam que uma senha fecha o link de forma definitiva. Não é assim que funciona. A segurança de links com senha funciona mais como um ingresso para um show: quem tem o ingresso, entra. Quem o entrega a alguém, também permite a entrada de outra pessoa.

Isso parece um defeito. Não é. Basta saber para que serve este mecanismo.

Três situações em que realmente é útil:

Tabela de preços para clientes premium ou um documento em versão beta, antes de ir para o mundo. Sem uma senha, um link como este acabará por aterrar no Google ou passará de mão em mão mais cedo ou mais tarde.

Conteúdo com data de validade. Oferta apenas para sexta-feira. Material da conferência exclusivamente para participantes. A senha transforma o link em uma entrada controlada — você sabe que alguém a recebeu de você, não a encontrou por acaso.

E uma coisa que você posta de forma totalmente pública, mas quer manter o controle. O link pode circular. Sem a senha, ninguém entrará de qualquer maneira.

E agora isto, o que este guia não deveria deixar passar

Você digita a senha no formulário. No mesmo instante, ela desaparece. Literalmente. O fato de você ter definido "tajne123" deixa de existir de forma legível antes mesmo de você soltar o botão.

O que permanece no banco de dados? Não a senha. Uma impressão digital dela. Tecnicamente: hash. Uma sequência de caracteres que corresponde à sua senha apenas quando alguém digita exatamente o mesmo que você. Por si só, não revela nada.

Direi isto abertamente, porque é importante: eu, o administrador do serviço, não tenho como ler a sua senha. Não porque eu seja educado. Mas porque fisicamente não há nada para ser lido. Se alguém invadisse o banco de dados, levaria apenas um monte desses impressões digitais e pronto.

O algoritmo que calcula isso é deliberadamente lento. Eu sei que "lento" soa como uma reclamação, mas é uma vantagem. O objetivo é que alguém que roube o banco de dados tenha que dedicar um tempo absurdamente longo para adivinhar uma única senha. Estamos falando de anos, não de segundos.

Clique do outro lado

Alguém recebe o seu link e clica. Em vez de chegar diretamente ao destino, vê um ecrã: "este link está protegido por palavra-passe", um campo para introduzir, um botão.

Digita. O servidor compara o que foi digitado com a impressão salva. Corresponde? Recebe um token de sessão válido por um dia. Pelas próximas 24 horas, ele retorna ao link sem precisar digitar nada. Não precisa lembrar, não precisa se esforçar.

Não concorda? Errado. Cinco erros do mesmo endereço IP e o acesso é bloqueado por cinco minutos. Um bot que tenta testar senhas sequencialmente baterá contra uma parede.

O que simplesmente não está aqui

Não salvamos senhas em texto aberto. Em lugar nenhum. Nem mesmo nos logs que consulto ao procurar erros.

Não enviamos senhas por e-mail. O que significa que, se alguém esquecer a senha, eu não poderei enviá-la, pois não a conheço. Você mesmo deve enviá-las, pelo mesmo canal que o anterior.

E não compartilhamos senhas externamente. Nenhuma análise, nenhum marketing, nenhum AB toca esses dados. (Esta é uma regra que se aplica a todo o cutty.dev, não apenas aqui.)

Dois hábitos que fazem a diferença

Primeiro: não invente uma senha de cabeça. O nome da empresa mais o ano de fundação é um presente para qualquer pessoa que te conheça. Um gerador no navegador entregará algo melhor em um segundo.

Segundo, mais importante: não envie a senha pelo mesmo canal que o link. O link foi enviado por e-mail? Envie a senha por SMS. Ou vice-versa. O sentido é que a invasão de uma única conta não dá a ninguém o conjunto completo.

Um detalhe que poucos sabem: você pode criar vários links que levam ao mesmo endereço, mas com senhas diferentes. Você dá acesso a cinco pessoas, cada uma com um link separado. Uma precisa se despedir? Você bloqueia o link dela, e o restante nem perceberá.

Você poderá alterar a senha sem criar um novo link. Painel, "Editar", nova senha. Atenção: todas as sessões ativas de 24 horas expiram imediatamente. Todos deverão digitar a senha novamente.

A fronteira que vale a pena saber com antecedência

Vamos voltar ao ingresso para o show. A senha protege contra mecanismos de busca e contra visitantes acidentais. Não protege contra alguém que conhece a senha e decide compartilhá-la com o mundo.

Se o seu cenário soa como "esta pessoa exata deve ver isso e ninguém mais", uma senha não será suficiente. Aqui você precisa de contas, login, autorização. Outra liga, outro problema.

Mas uma mão levantada, com que frequência você realmente tem um cenário assim? Na minha experiência, raramente. Na grande maioria dos casos, trata-se de um simples "não quero que alguém da rua entre aqui". E para essa frase, sobra margem de sobra.

Se você quiser ver como isso funciona por dentro — ao criar um link, expanda "Opções avançadas" e selecione "Adicionar senha". O resto acontece automaticamente.