Block signups from disposable email domains
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 28/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- authentication
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Ruby
- Estrellas
- 105
- Forks
- 206
- Merge medio
- 19 h 19 min
- PR fusionados (30 d)
- 77
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de codebar/planner
-
`Drop events.coach_description`Abiertorefactoring trivial
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
`Drop workshops.sign_up_url`Abiertorefactoring trivial
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
DashboardQuery eager-loads workshop_host with :sponsors in one join (same host-loss trap as #2975)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
Todos los issues de codebar/planner
Issues similares
-
bug f:search
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
manyfold3d/manyfold#7346 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
🐞 bug pending triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
CircuitVerse/CircuitVerse#8025 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
we-promise/sure#4199 ·
Los mantenedores suelen responder en 1 día
-
Zibi version number updateAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
riscv/riscv-unified-db#2738 ·
Los mantenedores suelen responder en 1 día