Elido
10 min de leituraRecursos

Expiração de Links e Links Autodestrutivos Explicados

O que fazem a expiração de links e os links autodestrutivos, quando usar regras de data, contagem de cliques e uso único, e o que a borda devolve no momento em que um link expira

Marius Voß
DevRel · edge infra
Um link curto com um temporizador de contagem decrescente a passar de um estado ativo para um estado expirado, com a borda a devolver 410 Gone

A expiração de links é uma regra que retira automaticamente um link curto assim que uma condição é cumprida, para que o URL pare de funcionar num momento que escolhe em vez de viver para sempre. Um link autodestrutivo é a mesma ideia ajustada para um único uso: morre após o primeiro clique. Ambos são intencionais. Não está a corrigir um link quebrado; está a construir um que se supõe que pare.

Essa intenção é a distinção completa que vale a pena guardar. Um link que quebra porque o seu destino desapareceu apodreceu, e o apodrecimento é um problema que deteta e repara. Escrevemos o guia operacional para isso em estratégia de prevenção de link rot. A expiração é o movimento oposto: é você a decidir que o link deve ficar inativo, numa data, após N cliques, ou após exatamente um. Este artigo cobre quando cada modo se adequa, o que a borda realmente devolve quando um link expirado é acedido, como a expiração se empilha com portões de palavra-passe e regras geo, e as ressalvas de timing que prejudicam se tratar um link de uso único como uma fronteira de segurança rígida.

Quando recorre a ela? Ofertas de tempo limitado que não devem continuar a converter após a janela promocional. Acesso com tempo limitado a um documento partilhado ou exportação de dados. Links de uso único para uma credencial ou um ficheiro sensível. Minimização de dados de conformidade, onde um link que concede acesso não deve sobreviver à razão pela qual foi criado. Links de eventos que devem morrer no dia após o evento para que um código QR obsoleto num cartaz não envie pessoas para o programa do ano passado.

A expiração vem em três formas, e escolher a certa é a maior parte da decisão.

O primeiro é por data e hora. Define um timestamp de expiração, idealmente com um fuso horário, e o link resolve normalmente até esse momento e depois para. Este é o URL expirante que a maioria das pessoas entende: um link temporário para uma campanha que termina à meia-noite, uma partilha de documento que deve fechar no final de um sprint, um link de tempo limitado para uma repetição de webinar que só quer aberta durante uma semana.

O segundo é por contagem de cliques. O link funciona para os primeiros N pedidos e depois expira. Defina N para 100 e o centésimo primeiro visitante obtém a resposta de expirado. Isto é útil para brindes com limite, convites beta com um número fixo de lugares, ou qualquer caso onde o limite é "quantas pessoas o usaram" em vez de "que dia é".

O terceiro é o uso único, que é contagem de cliques com N definido para um. Este é o link autodestrutivo. Abre uma vez e está morto em cada clique seguinte. Cópias reencaminhadas são inúteis, capturas de ecrã do URL são inúteis, e um link vazado num registo já está gasto se o destinatário pretendido o abriu primeiro.

Três modos de expiração lado a lado: por data e hora com um prazo de calendário, por contagem de cliques mostrando N usos e depois parar, e uso único mostrando um único clique permitido antes do link morrer

Os modos não são mutuamente exclusivos em princípio, embora na prática normalmente queira uma regra clara por link. Um link que expira numa data e após uma contagem de cliques está bem, mas seja explícito sobre qual condição espera que dispare primeiro, porque a resposta muda como raciocina sobre o tempo de vida do link. Se não consegue dizer numa frase por que razão um determinado link expira, provavelmente recorreu ao modo errado.

Um link curto ativo responde com um 302 para o seu destino. Um expirado tem de responder com algo terminal, e a escolha do código de estado não é cosmética.

A resposta mais limpa é 410 Gone. Por RFC 9110, a especificação de semântica HTTP, 410 significa que o recurso está intencionalmente e permanentemente indisponível, e o servidor não tem endereço de reencaminhamento. É exatamente o que é um link expirado. A referência MDN para 410 Gone nota que, ao contrário do 404, um 410 é um sinal deliberado de que o recurso costumava existir e agora está definitivamente desaparecido, o que é uma dica que os rastreadores respeitam removendo o URL do seu índice mais rapidamente. Para um link de campanha expirado que quer que os indexadores esqueçam, 410 é o código honesto.

Às vezes prefere não admitir que o link alguma vez existiu. Um 404 Not Found é a opção aí. Trata o slug expirado como se nunca fosse um link real, que é a postura mais discreta para links de uso único para material sensível onde mesmo confirmar que o URL alguma vez foi válido vaza algo. Tanto 404 como 410 são respostas terminais válidas; a diferença é o que está disposto a divulgar.

Num domínio com marca tem uma terceira opção que é mais amigável para humanos: uma página de expirado com marca. Em vez de um código de estado simples, a borda serve uma pequena página HTML que diz que o link fechou e, idealmente, aponta para uma alternativa atual. Esta é a escolha certa para links de marketing que uma pessoa real pode clicar semanas depois, a partir de um ativo impresso ou de um e-mail antigo. Um 410-com-corpo ainda está correto segundo os padrões: pode devolver o estado 410 e servir uma página explicativa na mesma resposta. A razão pela qual isto importa mais num domínio personalizado é que a página de expirado então carrega a sua marca em vez de um erro genérico, o que suaviza o beco sem saída.

Diagrama de decisão da borda: um link ativo devolve 302 para o destino, enquanto o mesmo link após a expiração devolve 410 Gone ou uma página de expirado com marca

A decisão acontece no mesmo salto que de outra forma emitiria o redirect, que é o mesmo ponto arquitetural que fizemos sobre smart links: o lugar mais barato para tomar uma decisão de encaminhamento ou portão é o processo que já está a escrever a resposta. A expiração é apenas mais uma verificação nesse caminho, avaliada antes de o redirect ser construído. Um link expirado custa à borda uma comparação extra, não uma chamada de serviço extra.

Casos de Uso por Audiência#

Diferentes equipas recorrem à expiração por razões diferentes, e o modo que se adequa decorre da razão.

As equipas de marketing querem expiração baseada em data na maioria das vezes. Um link de venda flash que continua a converter após o fim da venda é um bilhete de suporte à espera de acontecer, porque o preço na página de aterragem já não corresponde à oferta no link. Definir uma expiração que corresponde à janela da campanha mantém o link honesto. O padrão mais amigável, em vez de um 410 direto, é expirar a oferta ao vivo e redirecionar o slug para uma página "esta oferta terminou, aqui está a atual", que é o movimento de pôr-do-sol do guia de link rot aplicado propositadamente. Para o ferramental de campanha mais amplo, Elido para marketers cobre como a expiração se associa com templates UTM e rastreio de conversões.

As equipas jurídicas e de conformidade preocupam-se com a minimização de dados. O princípio de minimização de dados do GDPR no Artigo 5(1)(c) diz que os dados pessoais devem ser limitados ao que é necessário para o propósito. Um link que concede acesso a dados pessoais não deve sobreviver a esse propósito. Se um link existe apenas para deixar um contratante retirar um relatório neste trimestre, uma expiração no final do trimestre é a expressão ao nível do link do mesmo princípio que a sua política de retenção já afirma para os próprios dados. Elido para conformidade e a nossa página de confiança aprofundam o lado da residência e auditoria disso.

As equipas a partilhar ficheiros sensíveis apoiam-se na contagem de cliques e no uso único. Uma entrega de credenciais, uma exportação de dados pontual, um documento com NDA para um único revisor: o link deve abrir uma vez, para uma pessoa, e depois ficar inerte. Combine isso com um portão de palavra-passe e tem dois fatores independentes, ao que chegamos a seguir.

Como a Expiração Se Combina com Portões de Palavra-passe e Regras Geo#

A expiração é um portão, não um destino, e os portões empilham-se.

A borda avalia a expiração primeiro. Um link expirado nunca chega ao pedido de palavra-passe e nunca corre as regras geo ou de dispositivo, porque não há nada para encaminhar. Esta ordenação é deliberada: significa que um link de uso único vazado que já foi usado não pode sequer ser sondado quanto a se tinha uma palavra-passe, uma vez que a resposta de expirado vem antes de qualquer parte dessa lógica correr.

Para partilhas sensíveis, expiração e uma palavra-passe são controlos complementares. A palavra-passe é "prove que está autorizado"; a expiração é "e apenas dentro desta janela, ou apenas uma vez". Qualquer um sozinho é mais fraco do que ambos juntos. Um link de uso único que também está protegido por palavra-passe está morto após uma única abertura bem-sucedida e é inútil para qualquer pessoa que o intercete depois. Cobrimos o próprio portão em links curtos protegidos por palavra-passe.

As regras geo combinam-se da mesma forma. Um link com geo-targeting que também tem tempo limitado vai encaminhar por país enquanto estiver ativo e devolver a resposta de expirado assim que a janela fechar, com a verificação de país a nunca correr após a expiração. O modelo mental é uma pilha curta de portões pelos quais o pedido passa em ordem, e a expiração fica no topo dessa pilha. Nada disto é tratado de forma especial; resulta da avaliação da verificação mais barata e decisiva primeiro.

Como Configurar#

O fluxo prático é o mesmo independentemente do modo. Cria ou edita um link curto, escolhe uma regra de expiração e escolhe o que um acesso expirado deve devolver.

Para uma data, defina o timestamp de expiração e confirme o fuso horário. Um link definido para expirar à "meia-noite" sem um fuso horário é ambíguo entre regiões, e a ambiguidade é exatamente o tipo de desvio de um dia que surge num tópico de suporte. Use uma zona IANA explícita como Europe/Berlin para que "fim do dia da campanha" signifique a mesma coisa para todos.

Para uma contagem de cliques, defina o limite e decida se quer que a contagem seja estrita. Para um link de uso único, defina o limite para um. Escolha a sua resposta de expirado por link: 410 Gone para links que quer que os rastreadores esqueçam, 404 para discrição, ou uma página de expirado com marca num domínio personalizado para links de marketing voltados para humanos. O guia de smart links percorre os campos de regras, e a página de preços cobre quais as capacidades de expiração em que nível.

Uma nota sobre honestidade de timing, porque é aqui que a expiração é sobrevalorizada noutros lugares. As regras de data e contagem de cliques são avaliadas no momento do pedido contra o registo do link, por isso uma expiração baseada em data toma efeito no momento configurado. Uma expiração manual, onde desativa um link manualmente, tem de se propagar pelas caches da borda da mesma forma que qualquer edição de link. Isso é cerca de um segundo no caminho feliz, com um TTL de cache curto como limite superior, que é o mesmo modelo de propagação que documentámos em estratégia de cache para redirects de URL. Para limites de contagem de cliques, tráfego concorrente muito elevado espalhado por regiões pode deixar passar um pequeno número de cliques extra antes do contador distribuído se estabilizar. Para um limite de campanha de 1.000 isso é ruído. Para um link de uso único que está a tratar como uma fronteira de segurança rígida, não conte apenas com a contagem: adicione uma palavra-passe ou uma verificação do lado do servidor no destino, porque "exatamente uma vez, garantido, sob concorrência adversarial" é uma propriedade que o destino está melhor posicionado para aplicar do que o salto de redirect. A expiração na borda é um controlo forte, não uma garantia criptográfica, e dizer isso é a diferença entre uma funcionalidade e uma responsabilidade.

Usada para o que é boa, a expiração é uma das reduções de risco mais baratas no kit de ferramentas de links. Um link de campanha que não pode envergonhá-lo após a venda, uma partilha de documento que se fecha sozinha, um link de credenciais que está gasto no primeiro uso: cada um remove uma classe de problema antes que possa acontecer. Para a questão mais ampla de se os links curtos são seguros para distribuir de todo, os encurtadores de URL são seguros é a leitura complementar.

Relacionado no Blogue#

Experimente o Elido

Encurtador de URL hospedado na UE: domínios personalizados, análises profundas e API aberta. Plano gratuito - sem cartão de crédito.

Tags
link expiration
self destructing link
expiring url
temporary link
one time link
link expiry date

Continuar lendo