Multipart parsing matches boundary and form-data case-sensitively

Aperta Adatta ai principianti
#37 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
88/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend

Direzione di ricerca

Apri MaxLib.WebServer/Post/MultipartFormData.cs e controlla boundaryRegex() e la verifica di disposition vicino alla riga 119. Verifica la gestione con distinzione tra maiuscole e minuscole descritta nell'issue, quindi conferma che i parametri boundary e Content-Disposition con maiuscole e minuscole miste vengano accettati senza trasformare le parti valide in semplici valori FormEntry né restituire 400.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug good first issue severity:low

MultipartFormData matches parameter and token names case-sensitively, but RFC 9110/2045 make them case-insensitive. Content-Type: multipart/form-data; Boundary=xyz does not match boundaryRegex (no IgnoreCase), so the valid body is rejected with 400. A part with Content-Disposition: Form-Data; name="a" fails StartsWith("form-data", Ordinal) and becomes a plain FormEntry, losing its name and filename.

Location: MaxLib.WebServer/Post/MultipartFormData.cs (boundaryRegex(), and the disposition check near line 119)

Fix: Add RegexOptions.IgnoreCase | RegexOptions.CultureInvariant to boundaryRegex() and compare the disposition type with StringComparison.OrdinalIgnoreCase.

Lingua principale
C#
Stelle
1
Fork
3
Merge medio
1g 9h
PR unite (30g)
4

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Garados007/MaxLib.WebServer

Tutte le issue di Garados007/MaxLib.WebServer

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.