Block signups from disposable email domains
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 28/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Domínio
- authentication
Direção de pesquisa
Start by tracing the signup flow in planner and the magic-link request handled by auth.codebar.io to identify where an email-domain check could run. The issue leaves the check location, list source and refresh process, false-positive handling, and audit behavior open for discussion. Done means those choices are resolved and signup clearly handles blocked domains.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Background
Member 31423 is a junk signup from 23 September: gibberish profile, throwaway email [email protected], and seven chapter subscriptions (three of them coach groups in Helsinki, Berlin and West London) posted in 18 seconds. Full analysis is available on request — the short version is that the account passed every check because there are no checks:
- The magic-link flow proves the mailbox can receive mail, and a disposable email service receives mail, so throwaway addresses complete signup normally.
- The profile form accepts any content.
- Chapter and group subscriptions are unlimited, including coach groups.
We checked every signup since 24 September for rare email domains and found no repeat, so this was one account rather than a campaign. The account itself is being handled separately (suspend, keep the evidence).
Proposal
Block signups from known disposable email domains. smaau.com and similar services publish their domain lists publicly, so a denylist check on the email domain at signup would have stopped this account.
Open questions for discussion:
- Where the check lives. The magic-link request happens at auth.codebar.io; the profile and subscription flow happens in planner. Blocking at the auth layer stops the account before it exists; a planner-side check on the details form would only stop profile and subscription completion. Doing both, or just auth, needs deciding.
- List source and freshness. Public disposable-domain lists are maintained by third parties. Bundle a static list and update periodically, or fetch a list at runtime. Either way we need a refresh process and a way to audit changes.
- False positives. A denylist can catch a legitimate personal or company domain by mistake. The signup flow should tell the user what happened and give a contact route, and the check should log the domain for review rather than failing silently.
- Bypass concern. Nothing stops someone using a real mailbox for junk signups. The denylist raises the cost of junk signups; it does not eliminate them. Capping subscriptions for new accounts and gating coach-group subscriptions are follow-up options if this proves insufficient.
Related
- The
members.unsubscribedcolumn is unrelated dead schema, tracked in a separate issue.
- Linguagem predominante
- Ruby
- Estrelas
- 105
- Forks
- 206
- Merge médio
- 19h 31min
- PRs com merge (30d)
- 84
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de codebar/planner
-
DashboardQuery eager-loads workshop_host with :sponsors in one join (same host-loss trap as #2975)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dual Invitiation issueTalvez já em andamento @mroderick assumiu há 1 dia. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 42/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 18/100
codebar/planner#3006 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de codebar/planner
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
TheOdinProject/curriculum#31467 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
message-patterns
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
sisimai/rb-sisimai#468 ·
-
202610-volunteers my-first-pr PROJECT: website-redesign
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
thewca/worldcubeassociation.org#16072 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 7 dias