Skip to content

security(deploy): nginx client_max_body_size 100M → 120M#18

Merged
mpasternak merged 1 commit into
mainfrom
feat/zglos-tmp-cron-nginx-cap
Jul 12, 2026
Merged

security(deploy): nginx client_max_body_size 100M → 120M#18
mpasternak merged 1 commit into
mainfrom
feat/zglos-tmp-cron-nginx-cap

Conversation

@mpasternak

@mpasternak mpasternak commented Jul 12, 2026

Copy link
Copy Markdown
Member

Kontekst

Warstwa wdrożeniowa dla naprawy anonimowego DoS przez uploady formularza zgłoszeń (bpp PR #551, na dev).

Zmiana zakresu: retencja wyczysc_zglos_tmp przeniesiona z Ofelii do celery beat w repo bpp (osobny PR) — to lekki cyklik z bezpośrednim rodzeństwem (cleanup-integrator2-files, cleanup-oswiadczenia-export-files w CELERYBEAT_SCHEDULE), portable z kodem. Ten PR jest teraz wyłącznie nginx.

Zmiana

nginx client_max_body_size 100M → 120M (defaults/webserver/vhost.conf.template).

Limity app-layer z #551: 5 plików × 20 MiB = dokładnie 100 MiB samych plików = nginx 100M co do bajta → najbardziej poprawne maks. zgłoszenie dostawałoby 413 przed dotarciem do Django (zero zapasu na narzut multipart: boundary, nagłówki per-part, formset autorów, CSRF). 120M daje ~20 MiB marginesu; bariera nadal > limitów app-layer. Plik bind-mountowany wersjonowo → git pull && make up aktywuje bez migracji.

Testy

  • pre-commit: PASS. mkdocs build --strict: EXIT 0.
  • tests/test_makefile.sh: 133 passed / 1 failed — fail (nginx -t LE-mode fallback) pre-existing, zweryfikowany revertem vhost do origin/main (identyczny wynik). 4 warianty nginx -t przeszły na zmienionym templatcie.

🤖 Generated with Claude Code

@mpasternak
mpasternak force-pushed the feat/zglos-tmp-cron-nginx-cap branch from 5e670eb to 856aa10 Compare July 12, 2026 18:09
Legalny maks zgloszenia publikacji to 5 x 20 MiB = 104857600 B = DOKLADNIE
100 MiB samych plikow (walidatory app-layer MAX_ROZMIAR_PLIKU/MAX_LICZBA_PLIKOW,
bpp PR #551), a dawny cap 100M (== 100 MiB) nie zostawial ani bajta na narzut
multipart (granice, naglowki per-part, pola formsetu autorow, CSRF) -> najwieksze
POPRAWNE zgloszenie dostawaloby 413 zanim dotrze do Django. 120M daje ~20 MiB
zapasu bez istotnego oslabienia bariery (nadal > limity app-layer; rate-limit
per-IP ogranicza czestotliwosc). vhost.conf.template bind-mountowany wersjonowo
-> 'git pull && make up' aktywuje bez migracji.

Retencja plikow tmp (wyczysc_zglos_tmp) przeniesiona do celery beat w repo bpp
(lekki cyklik z rodzenstwem cleanup-*, portable z kodem) zamiast Ofelii.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak
mpasternak force-pushed the feat/zglos-tmp-cron-nginx-cap branch from 856aa10 to 60a090f Compare July 12, 2026 18:10
@mpasternak mpasternak changed the title security(deploy): cron wyczysc_zglos_tmp (Ofelia) + nginx client_max_body_size 100M→120M security(deploy): nginx client_max_body_size 100M → 120M Jul 12, 2026
@mpasternak
mpasternak merged commit 1fddaef into main Jul 12, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant