Sicurezza
Qui sotto c'è solo quello che il codice fa davvero. Quello che non facciamo ha una sezione tutta sua, ed è quella da leggere per prima se hai fretta.
Ultimo aggiornamento: 2026-09-05
1I soldi
- I dati della tua carta non toccano mai i nostri server. Stanno da Stripe (certificato PCI-DSS Level 1) o da Apple. Noi conserviamo l'importo e l'identificativo della transazione, niente altro.
- L'importo lo decide sempre il server, mai l'app. Su nessuno dei canali di pagamento la cifra da accreditare arriva dal dispositivo: se arrivasse, «pago 1 € e me ne accredito 1.000» sarebbe una richiesta HTTP.
- Le notifiche dei fornitori di pagamento sono verificate con la firma, e in caso di dubbio vengono rifiutate. Se manca la chiave con cui controllare la firma, la notifica viene respinta — non accettata con un controllo vuoto. È la differenza fra «non ho potuto verificare, quindi no» e «non ho potuto verificare, quindi sì».
- Un rimborso storna davvero. Credito e posizione in classifica vengono annullati, una sola volta anche se il fornitore manda tre notifiche per lo stesso rimborso.
2La cancellazione, e quello che sopravvive
Quando cancelli l'account sparisci subito da ogni superficie pubblica e resti ripristinabile per sei mesi. Dopo, la riga viene anonimizzata: email non instradabile, nome neutro, profilo svuotato, messaggi e amicizie cancellati.
I pagamenti non vengono mai cancellati, nemmeno allora — e non è una dimenticanza, è la scelta giusta fatta due volte. La prima versione li cancellava, e cancellava anche i pagamenti che altre persone avevano fatto ai gruppi fondati da chi se ne andava. Oggi la cancellazione avviene sulla riga dell'utente, non sul registro: il documento contabile resta e non identifica più nessuno.
3L'accesso
- Le password sono conservate con bcrypt (fattore di costo 12) e non sono leggibili, nemmeno da noi. Non compaiono in nessun registro.
- Il recupero password non rivela se un indirizzo è registrato. La risposta è identica per un indirizzo che esiste e per uno che non esiste: stesso testo, stessa forma e — la parte che di solito manca — stesso tempo. Ogni risposta parte a un ritardo fisso dalla richiesta, così non è il cronometro a dire quello che le parole tacciono.
- Reimpostare la password non aggira la verifica in due passaggi. Se è attiva, il reset la chiede lo stesso: altrimenti basterebbe l'accesso alla casella email per scavalcarla, e il secondo fattore sarebbe teatro.
- I segreti della verifica in due passaggi sono cifrati a riposo (AES-256-GCM), con chiavi diverse per gli utenti e per gli amministratori: un segreto amministrativo non è decifrabile con la chiave degli utenti.
- Un codice a sei cifre vale una volta sola. Riusarlo entro i suoi trenta secondi non funziona.
- Le sessioni si revocano all'istante. Cambio password, disattivazione del secondo fattore, «esci da tutti i dispositivi» e cancellazione invalidano ogni accesso in corso e chiudono nello stesso momento anche le connessioni in tempo reale già aperte.
4Chi può guardare dentro
Il pannello di amministrazione sta su un sottodominio separato e attraversa, in quest'ordine: l'accesso aziendale di Cloudflare con account Google, una lista chiusa di indirizzi ammessi, una password dedicata (bcrypt, diversa da qualsiasi password utente) e un codice a sei cifre appena generato. Le azioni che scrivono qualcosa chiedono un codice nuovo ogni volta, non una volta per sessione. La sessione dura un'ora.
Gli amministratori sono una tabella separata, senza alcun collegamento a quella degli utenti. Non esiste una colonna «sei amministratore» sul tuo account: nessuna vulnerabilità dell'app può promuovere qualcuno, perché non c'è niente da promuovere. Gli account amministrativi si creano solo da riga di comando sul server.
Ogni richiesta amministrativa finisce in un registro che si scrive e non si cancella — anche quelle respinte, che oggi sono la maggior parte. I valori sensibili nel corpo delle richieste vengono oscurati prima di essere scritti.
5L'infrastruttura
- Tutto sta in Europa. Server e database sono in Germania, su macchine dedicate a ImVIP e a nient'altro.
- Il database non è esposto a internet. Non ha nessuna porta pubblica: ci si arriva solo dall'interno.
- Il server accetta connessioni solo dagli indirizzi di Cloudflare, IPv4 e IPv6, con l'elenco aggiornato automaticamente. Chi tenta di raggiungerlo direttamente non ottiene risposta.
- Le copie di sicurezza sono cifrate prima di lasciare la macchina, con una chiave pubblica: il server può creare una copia e non può rileggerla. Chi entrasse nel server non potrebbe aprire i backup di ieri. Le copie vengono poi portate fuori dal server.
- Connessione cifrata ovunque, con HSTS per un anno esteso ai sottodomini, più le intestazioni che impediscono a una pagina di caricare codice da terzi o di finire dentro il sito di qualcun altro.
6Il codice
- Nessuna query costruita incollando stringhe. Le interrogazioni al database sono sempre parametrizzate, e nessun comando di sistema viene costruito come testo di una shell.
- Le immagini caricate vengono riscritte. Il nome del file lo decide il server (quello che arriva dal dispositivo non viene mai usato) e ogni immagine viene ricodificata prima di toccare il disco, quindi i byte originali non vengono mai salvati né serviti.
- Gli interruttori di privacy passano da un punto solo. «Nascondi l'importo» e «nascondi il paese» sono applicati da un'unica funzione condivisa: è la correzione a un difetto che questo progetto ha avuto davvero — un interruttore rispettato su cinque schermate e dimenticato sulla sesta.
- Le prove girano sul codice vero. Le suite automatiche avviano i percorsi reali del server e parlano HTTP come farebbe un'app, con centinaia di controlli. Una di esse fa fallire davvero un pagamento a metà transazione, con un innesco nel database, per verificare che non resti mai un mezzo accredito.
7Quello che NON promettiamo
Questa sezione esiste perché una pagina sulla sicurezza che elenca solo le cose belle non è una pagina sulla sicurezza.
- I messaggi diretti non sono cifrati end-to-end per impostazione predefinita. Senza la cifratura della singola conversazione, sul nostro server il testo è leggibile. Il motivo per cui non lo abbiamo acceso è spiegato nell'informativa privacy.
- La classifica è pubblica e copiabile. Nome, foto, biografia, città e importo dei primi mille si leggono senza account, e chiunque può salvarseli. È il prodotto, non un difetto — ma è bene saperlo prima di scrivere qualcosa nella biografia.
- La ricerca trova le persone di proposito. Serve a ritrovare un amico, quindi conferma che un nome visualizzato esiste. È una scelta, non una svista.
- Non abbiamo ancora un programma di segnalazione vulnerabilità con ricompense. Se trovi qualcosa, però, ci fa piacere saperlo subito e ti rispondiamo: [email protected].
8Hai trovato un problema?
Scrivi a [email protected] descrivendo che cosa hai fatto e che cosa hai ottenuto. Rispondiamo, ti diciamo che cosa abbiamo capito, e ti facciamo sapere quando è sistemato.
Ti chiediamo solo due cose: non toccare dati di altre persone e non degradare il servizio per chi lo sta usando. Chi si comporta così non avrà problemi da parte nostra.