FerrisGitSicurezza

Sicurezza e dati

Le misure che proteggono un'istanza, descritte con precisione. I dati non lasciano mai il server.

Cosa restituisce il server

Le intestazioni di sicurezza, così come un'istanza le invia.

$ curl -s -D - -o /dev/null http://localhost:8080/health
HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
x-frame-options: DENY
x-content-type-options: nosniff
referrer-policy: no-referrer
x-robots-tag: noindex, nofollow
content-length: 2
date: Sun, 04 Oct 2026 11:41:43 GMT
Un'istanza locale, versione 0.1.2, interrogata su /health. Il server aggiunge la policy dei contenuti, X-Frame-Options, X-Content-Type-Options e Referrer-Policy a ogni risposta: pagine, API e Git.
L'autenticazione a più fattori è obbligatoria
Un account senza fattore attivo passa dalla configurazione prima di poter fare qualsiasi altra cosa. TOTP, passkey e codici di recupero.
Password con hash Argon2
Un sale per password. Un nome utente sconosciuto costa tanto calcolo quanto una password sbagliata, e riceve la stessa risposta.
Segreti cifrati con AES-256-GCM
Variabili CI, segreti dei webhook, password SMTP e segreti TOTP, sotto SETTINGS_ENCRYPTION_KEY.
Token per Git, mai password
Git su HTTPS si autentica con un token di accesso personale, conservato con hash: il server non può rileggerlo.
Un registro di audit
Accessi falliti, accessi Git rifiutati, reset di password, promozioni e reset dell'MFA da parte di un amministratore vengono registrati come eventi.
Niente cookie, header rigorosi
Le sessioni sono JWT. Ogni risposta porta una Content-Security-Policy, X-Frame-Options: DENY, e le route di accesso sono limitate per IP.
I dati, sul proprio server
PostgreSQL e una directory di repository, entrambi da salvare a cura di chi gestisce l'istanza. L'immagine gira con un utente senza privilegi su un filesystem in sola lettura.

La pagina Sicurezza della documentazione (in francese)

Valutare FerrisGit, poi distribuire la propria istanza.

L'istanza pubblica consente di conoscere il prodotto. La propria istanza custodisce il codice.

Avviare lo stack con Docker Compose
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SETTINGS_ENCRYPTION_KEY and the admin password in .env
docker compose up -d --build