24 de ago. de 2025·7 min de leitura

Links de convite de organização seguros: expiração, uso único e reutilização segura

Proteja links de convite de organização com tokens expiráveis e de uso único, regras para reutilização de email e comportamento claro quando orgs são excluídas ou convites revogados.

Links de convite de organização seguros: expiração, uso único e reutilização segura

Perguntas Frequentes

Why are org invitation links such a common security problem?

Trate o token na URL como uma senha. Se ele for de longa duração ou reutilizável, acabará vazando por encaminhamentos, capturas de tela, logs ou histórico do navegador, e qualquer pessoa que o encontrar pode tentar entrar.

What’s a reasonable default expiry time for an invite link?

Um bom padrão é 24–72 horas para a maioria dos produtos, porque convites geralmente são aceitos rapidamente e janelas curtas reduzem o risco de replay. Se seus clientes demoram mais, você pode estender, mas apenas se o convite for estritamente de uso único e fácil de reenviar.

What should an invite token actually be made of?

Faça o token ser uma string longa e aleatória que aponte para um registro de convite no seu banco de dados. Evite tokens que codifiquem informações sobre a organização, funções ou emails, porque links encaminhados não devem vazar detalhes.

Should I store invite tokens in plaintext in my database?

Armazene apenas um hash do token, não o valor bruto. Se seu banco de dados vazar, tokens com hash não podem ser reaproveitados imediatamente — mesma razão pela qual você não armazena senhas em texto simples.

When should an invite be marked as “used”?

Consuma o convite apenas após uma aceitação bem-sucedida que realmente crie a associação, não quando a página é visualizada ou quando um cadastro é iniciado. Faça a criação da associação e a marcação como usado juntos, para que apenas uma requisição possa vencer.

How do I prevent the same invite link from being used twice?

Use uma transação única (ou operação atômica equivalente) que verifique que o convite está pendente e não expirado, crie a associação e então marque o convite como consumido. Adicione uma regra de unicidade como org_id + user_id para que cliques duplos não criem duplicatas.

How do I handle someone clicking an invite while logged into the wrong email?

Exija que o usuário faça login primeiro, então compare o email verificado da conta autenticada (ou a regra de identidade que você escolher) com o destino do convite. Se não corresponder, bloqueie a aceitação e peça para trocar de conta ou solicitar um novo convite.

What should happen if an invite is revoked or the org gets deleted?

A revogação deve invalidar o convite imediatamente, mesmo que não tenha expirado. Para organizações excluídas ou suspensas, nunca permita que convites pendentes concedam acesso; mostre uma mensagem genérica “invitação não é mais válida” e registre o motivo real internamente.

What error message should users see for expired or invalid invites?

Mantenha a mensagem consistente e não reveladora, como “Este convite é inválido ou expirou. Peça ao administrador da organização para enviar um novo.” Não confirme se a organização existe, qual função foi oferecida ou se o email está registrado.

My invite flow is AI-generated and feels flaky—how can I get it fixed fast?

Se o fluxo de convite foi gerado por uma ferramenta de IA e parece aceitar convites sem as verificações apropriadas, vale a pena uma auditoria focada. FixMyMess pode revisar o código, identificar as lacunas exatas (expiração, uso único, vinculação de email, logs) e corrigir rapidamente, começando por uma auditoria de código gratuita para você saber o que está quebrado antes de aplicar correções.