Add rate limiting to auth, public share pages and metadata fetching
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- html
- Área
- authentication, backend, security
Línea de trabajo
Comienza con LearnStack/Components/Pages/SharedView.razor:4 y LearnStack.Core/Extensions/ServiceCollectionExtensions.cs:29-34, y luego sigue los puntos de entrada de /Account/*, /shared/{token}, /friends/accept/{token} y las solicitudes de OpenGraph. El trabajo estará terminado cuando los intentos de inicio de sesión repetidos devuelvan 429, la enumeración de share-token esté limitada y un usuario no pueda saturar las solicitudes HTTP salientes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Tier 2 — security
Problem
Nothing in the app is throttled. In particular:
- Login and registration accept unlimited attempts (Identity lockout helps, but only per-account).
/shared/{token}is anonymous and unthrottled, so share tokens can be brute-forced and the page is a free amplification target (it loads full resource rows including thumbnails).- The metadata fetcher lets any authenticated user make the server issue arbitrary outbound HTTP requests on demand, with no per-user budget.
Evidence
- No
AddRateLimiteranywhere in the repository LearnStack/Components/Pages/SharedView.razor:4—[AllowAnonymous]LearnStack.Core/Extensions/ServiceCollectionExtensions.cs:29-34— unthrottledHttpClient
Proposed fix
builder.Services.AddRateLimiter(...)with a fixed window on/Account/*.- A per-IP window on
/shared/{token}and/friends/accept/{token}. - A per-user concurrency limiter around OpenGraph fetches.
Acceptance criteria
- Repeated login attempts from one IP are throttled with 429
- Share-token enumeration is rate-limited
- One user cannot saturate the outbound HTTP client
- Lenguaje dominante
- HTML
- Estrellas
- 10
- Forks
- 0
- Merge medio
- 2 h 35 min
- PR fusionados (30 d)
- 21
Preparar el entorno
- Sin Dockerfile ni 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 kasuken/LearnStack
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
kasuken/LearnStack#59 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
kasuken/LearnStack#72 ·
Los mantenedores suelen responder en 1 día
-
Feature: admin dashboardAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
kasuken/LearnStack#71 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
kasuken/LearnStack#70 ·
Los mantenedores suelen responder en 1 día
-
Feature: public profile pagesAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
kasuken/LearnStack#69 ·
Los mantenedores suelen responder en 1 día
Todos los issues de kasuken/LearnStack
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
WordPress/two-factor#1022 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
beginner friendly community contributions-welcome enhancement good first issue hacktoberfest help wanted security up-for-grabs
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Team/Identity Server Core Type/Improvement U2
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
wso2/product-is#28553 ·
Los mantenedores suelen responder en 1 día