# Politica di Sicurezza ## Versioni Supportate Attualmente, SafeVault è alla versione 1.0.0. Raccomandiamo di usare sempre l'ultima versione disponibile. | Versione | Supportata | | -------- | ------------------- | | 1.0.x | :white_check_mark: | | < 1.0 | :x: | ## Segnalazione Vulnerabilità Se scopri una vulnerabilità di sicurezza in SafeVault, ti preghiamo di segnalarla in modo responsabile. ### Come segnalare 1. **Non** aprire una issue pubblica su GitHub 2. Invia una email a: [security@example.com] (sostituisci con la tua email) 3. Includi nella segnalazione: - Descrizione dettagliata della vulnerabilità - Passi per riprodurre il problema - Impatto potenziale - Eventuale patch suggerita ### Cosa aspettarsi - Conferma di ricezione entro 48 ore - Valutazione della vulnerabilità entro 7 giorni - Rilascio di una patch entro 30 giorni (se confermata) - Credito pubblico per la scoperta (se desiderato) ## Funzionalità di Sicurezza SafeVault implementa diverse misure di sicurezza: ### Autenticazione - **Password Hashing**: bcrypt con cost factor 12 - **Sessioni Sicure**: Cookie HttpOnly e server-side sessions - **Protezione CSRF**: Token CSRF su form critici (future release) - **Rate Limiting**: Pianificato per future versioni ### Crittografia Dati - **Algoritmo**: AES-256-CBC - **IV Unico**: Ogni password usa un Initialization Vector casuale - **Key Management**: Chiave configurabile in config.php ### Database - **PDO**: Tutte le query usano prepared statements - **Input Validation**: Sanitizzazione e validazione di tutti gli input - **SQL Injection**: Protezione completa tramite prepared statements ### Web Security - **XSS Protection**: Header X-XSS-Protection attivo - **Content Type**: X-Content-Type-Options: nosniff - **Frame Options**: X-Frame-Options: SAMEORIGIN - **HTTPS**: Supporto e configurazione per SSL/TLS ## Best Practices per l'Utente ### Durante l'Installazione 1. ✅ **Cambia la chiave di crittografia** ```php define('ENCRYPTION_KEY', 'tua-chiave-casuale-32-caratteri'); ``` 2. ✅ **Usa HTTPS in produzione** - Installa un certificato SSL (Let's Encrypt gratuito) - Attiva la forzatura HTTPS in .htaccess 3. ✅ **Proteggi config.php** ```bash chmod 600 includes/config.php ``` 4. ✅ **Usa password forte per MySQL** - Minimo 16 caratteri - Mix di lettere, numeri e simboli 5. ✅ **Abilita firewall** - Chiudi porte non necessarie - Permetti solo traffico HTTP/HTTPS ### Durante l'Uso 1. ✅ **Password Account** - Usa password unica e forte (min. 12 caratteri) - Non condividerla mai - Cambiala regolarmente 2. ✅ **Backup Regolari** - Esegui backup del database settimanalmente - Testa il ripristino dei backup 3. ✅ **Aggiornamenti** - Mantieni PHP aggiornato - Aggiorna MySQL/MariaDB - Monitora le release di SafeVault 4. ✅ **Monitoring** - Controlla i log del server regolarmente - Monitora tentativi di login falliti 5. ✅ **Logout** - Esegui sempre logout quando termini - Non lasciare sessioni aperte ## Configurazioni di Sicurezza Avanzate ### PHP Settings (php.ini) ```ini ; Disabilita funzioni pericolose disable_functions = exec,passthru,shell_exec,system,proc_open,popen ; Limita esposizione informazioni expose_php = Off display_errors = Off ; Session security session.cookie_httponly = 1 session.cookie_secure = 1 ; Se usi HTTPS session.use_only_cookies = 1 ; Upload limits upload_max_filesize = 2M post_max_size = 2M ``` ### Apache (.htaccess) ```apache # Header di sicurezza Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options "nosniff" Header set X-Frame-Options "SAMEORIGIN" Header set Referrer-Policy "strict-origin-when-cross-origin" # Content Security Policy (opzionale, da testare) Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' cdn.tailwindcss.com; style-src 'self' 'unsafe-inline' cdn.tailwindcss.com" # HTTPS Strict Transport Security (solo se usi HTTPS) Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" ``` ### MySQL Security ```sql -- Crea un utente dedicato con privilegi limitati CREATE USER 'safevault_user'@'localhost' IDENTIFIED BY 'password_forte_qui'; GRANT SELECT, INSERT, UPDATE, DELETE ON safevault_db.* TO 'safevault_user'@'localhost'; FLUSH PRIVILEGES; ``` ## Vulnerabilità Note Nessuna vulnerabilità nota alla versione 1.0.0. ## Checklist di Sicurezza Pre-Produzione Prima di mettere SafeVault in produzione, verifica: - [ ] HTTPS attivo e funzionante - [ ] Chiave di crittografia cambiata (non quella di default) - [ ] Password MySQL forte - [ ] File config.php protetto (chmod 600) - [ ] Cartella includes/ non accessibile via web - [ ] Display errors disabilitato in PHP - [ ] Firewall configurato - [ ] Backup automatici configurati - [ ] SSL certificate valido - [ ] Header di sicurezza attivi - [ ] Log monitoring attivo - [ ] Database user con privilegi minimi - [ ] Cookie secure attivo (se HTTPS) - [ ] Versione PHP aggiornata (8.0+) - [ ] File .env o config.php non in Git ## Risorse Utili - [OWASP Top 10](https://owasp.org/www-project-top-ten/) - [PHP Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/PHP_Configuration_Cheat_Sheet.html) - [Let's Encrypt SSL](https://letsencrypt.org/) - [Have I Been Pwned](https://haveibeenpwned.com/) ## Audit di Sicurezza SafeVault non è stato ancora sottoposto a un audit di sicurezza professionale. Se desideri contribuire con un audit, contattaci! ## Conformità SafeVault è progettato per essere conforme a: - Linee guida OWASP per applicazioni web sicure - Best practices di crittografia moderne (AES-256) - Standard di password hashing (bcrypt) **Nota**: SafeVault è fornito "così com'è" senza garanzie. Spetta all'utente finale implementare le misure di sicurezza appropriate per il proprio ambiente. --- Ultimo aggiornamento: 2025-01-03 Versione documento: 1.0