Add rate limiting to auth, public share pages and metadata fetching
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- html
- Ambito
- authentication, backend, security
Direzione di ricerca
Inizia da LearnStack/Components/Pages/SharedView.razor:4 e LearnStack.Core/Extensions/ServiceCollectionExtensions.cs:29-34, quindi traccia gli entry point di /Account/*, /shared/{token}, /friends/accept/{token} e delle richieste OpenGraph. Il lavoro è completato quando i tentativi di accesso ripetuti restituiscono 429, l’enumerazione dei share-token è soggetta a throttling e un singolo utente non può saturare le richieste HTTP in uscita.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- HTML
- Stelle
- 10
- Fork
- 0
- Merge medio
- 2h 35m
- PR unite (30g)
- 21
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di kasuken/LearnStack
-
enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
kasuken/LearnStack#59 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
kasuken/LearnStack#72 ·
I maintainer di solito rispondono entro 1 giorno
-
Feature: admin dashboardApertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
kasuken/LearnStack#71 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
kasuken/LearnStack#70 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
kasuken/LearnStack#69 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di kasuken/LearnStack
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
security
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
pedrorchagas/blog-api#7 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
BenGWeeks/lightning-piggy-mobile#1243 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno