feat(R4b): reproducible builds — pin requirements.lock checksum
- Dockerfile: build-arg REQUIREMENTS_CHECKSUM verifica lo sha256 del lockfile (fallisce la build se non coincide; vuoto = skip locale) - docker-compose.yml: default = hash corrente del lock - CI: nuovo job checksum.yml che fallisce se il pin non coincide - Fix YAML preesistente in ci.yml (name: con ':' non quotati) - Docs: README, .env.example, review aggiornati
This commit is contained in:
1 parent
0f15b7958f
commit
12d2018ac5
7 files changed
+78
-10
No files matched your search
@@ -21,8 +21,9 @@ vanno chiuse prima di considerare il progetto "pronto" per un uso reale.
|
||||
Esito revisione: **❌ non pronta per produzione — servono correzioni**.
|
||||
|
||||
> Aggiornamento (sessione corrente): la P0 è chiusa (**R1, R2, R3, R6**) e
|
||||
> parte della P1 (**R4** lock + **CI** smoke test + **self-host JS offline**).
|
||||
> Restano P1 R4b e P2 (R5, R7).
|
||||
> parte della P1 (**R4** lock + **CI** smoke test + **self-host JS offline** +
|
||||
> **R4b** checksum lock nel Dockerfile/CI).
|
||||
> Restano P2 (R5, R7).
|
||||
|
||||
---
|
||||
|
||||
@@ -227,10 +228,10 @@ rimosse, trust proxy ristretto via env.
|
||||
| R1 | Reader 404 su file convertiti | Alta | Alta | ✅ risolto |
|
||||
| R2 | Disk/CPU DoS via upload non autenticato | Alta | Media | ✅ mitigato (auth+rate) |
|
||||
| R3 | XSS da file HTML malevoli | Alta | Bassa | ✅ mitigato (CSP+DOMPurify) |
|
||||
| R4 | Build non riproducibile | Media | Media | ✅ lockfile |
|
||||
| R4 | Build non riproducibile | Media | Media | ✅ lockfile + checksum pinned |
|
||||
| R5 | Errori timeout conversioni lunghe | Media | Media | ⏳ P2 |
|
||||
| R6 | Trust proxy / opzioni fantasma | Bassa | Media | ✅ risolto |
|
||||
| R7 | /tmp tmpfs vs conversioni grandi | Bassa | Bassa | ⏳ P1 |
|
||||
| R7 | /tmp tmpfs vs conversioni grandi | Bassa | Bassa | ⏳ P2 |
|
||||
|
||||
---
|
||||
|
||||
@@ -247,8 +248,9 @@ rimosse, trust proxy ristretto via env.
|
||||
✅ `requirements.lock` (pip-compile, 112 righe) + Dockerfile lo usa.
|
||||
- [x] Self-hosting dei JS frontend (per offline).
|
||||
✅ epub.js/pdf.js+worker/JSZip vendored in `static/vendor/`, CSP senza CDN.
|
||||
- [ ] **R4b** `git` revision pin nel Dockerfile build-arg `--build-arg
|
||||
requirements_checksum` (advanced).
|
||||
- [x] **R4b** Hash del lockfile pinnato nel Dockerfile (build-arg
|
||||
`REQUIREMENTS_CHECKSUM`, default in compose) + job CI di verifica
|
||||
(`.github/workflows/checksum.yml`). ✅ fatto
|
||||
- [x] **R6** Cleanup gunicorn.conf (opzioni inesistenti; `forwarded_allow_ips`
|
||||
solo per proxy fidato noto). ✅ già fatto
|
||||
- [x] Smoke test Docker nella CI (`docker build` + `docker compose up` +
|
||||
|
||||
Reference in new issue
Block a user