Vai al contenuto
NomaDev

Sicurezza

Sicurezza: cosa sta dove

NomaDev è fatto in modo che il tuo lavoro non debba mai passare da noi. Questa pagina spiega, punto per punto, dove stanno il tuo codice, le password e le chiavi, e il poco che conserva il nostro servizio.

I tuoi progetti non lasciano mai il computer

Il server di NomaDev gira sul computer o sul VPS dove ci sono già i tuoi progetti. Claude Code, git, l'anteprima e i caricamenti girano tutti lì.

Il telefono si collega direttamente a quella macchina. A casa di solito succede tramite Tailscale, una rete cifrata punto a punto basata su WireGuard; su un VPS, in HTTPS con il tuo certificato. In mezzo non c'è nessun nostro server, quindi non possiamo vedere il tuo codice nemmeno volendo.

Password e passphrase stanno solo sul telefono

Quando un caricamento chiede una password FTP o SFTP, o la passphrase di una chiave SSH, la scrivi sul telefono. Se scegli di ricordarla, viene salvata nel Keystore di Android, lo spazio cifrato protetto dall'hardware del telefono; altrimenti vale solo per quel tentativo.

La password arriva al computer per quel singolo caricamento, resta in memoria finché il caricamento è in corso e non viene mai scritta su disco — né sul tuo computer né da noi. I nostri server non la vedono mai.

Scollegare il telefono dall'app cancella anche le password salvate su di esso.

Le chiavi SSH si spostano solo se lo chiedi tu

Per pubblicare via SFTP il server usa le chiavi SSH che hai già sul computer, nella cartella del tuo utente. Non vengono copiate né caricate da nessuna parte: il telefono sa solo se la chiave chiede una passphrase.

L'unica eccezione la decidi tu: per usare nel terminale la chiave di una destinazione, puoi copiarla sul telefono. Come funziona, qui sotto.

Il terminale SSH

Il terminale si collega dal telefono direttamente al server, in SSH: la connessione è cifrata da un capo all'altro e non passa dal tuo computer né da nessun nostro server. Per questo funziona anche a computer spento.

Chiavi e password del terminale vivono solo sul telefono, cifrate con una chiave del Keystore di Android protetta dall'hardware. Per usarle servono la tua impronta o il PIN, e lo sblocco vale cinque minuti. Non finiscono nel backup di Android né su Google Drive, e le usa solo la parte nativa dell'app, nel momento in cui si collega.

Puoi generare una chiave direttamente sul telefono: la parte privata non esce mai da lì, e sul server copi solo la pubblica. Se preferisci la chiave che una destinazione usa già sul computer, l'app la copia una volta sola, dopo l'impronta o il PIN, e solo se la richiesta arriva cifrata, in HTTPS o da un proxy HTTPS sulla stessa macchina: su una connessione in chiaro il computer la rifiuta.

La prima volta che ti colleghi a un server l'app ti mostra la sua impronta e la ricorda; per le destinazioni già confermate dal computer vale la sua. Se l'impronta cambia, l'app si ferma e ti avvisa, e per accettarla devi tenere premuto. Chiave e password vengono sbloccate solo dopo questa conferma.

Quello che passa nel terminale resta nella memoria del telefono, mai su disco, e sparisce quando chiudi la sessione. Il terminale non compare nelle app recenti né negli screenshot, a meno che tu non lo permetta. In background le sessioni restano aperte al massimo per il tempo che scegli, e dalla notifica le chiudi tutte con un tocco.

Solo i telefoni che autorizzi

Per collegare un telefono serve un codice mostrato sul computer: 8 caratteri, usa e getta, valido 10 minuti e annullato dopo 5 tentativi sbagliati. Il QR contiene lo stesso codice.

Ogni telefono riceve poi un suo token d'accesso. Il server ne tiene solo l'impronta SHA-256, mai il token, quindi nemmeno chi legge i file del server può spacciarsi per il tuo telefono.

In Impostazioni vedi tutti i telefoni collegati e puoi scollegarne uno qualsiasi. Un telefono scollegato non può più collegarsi; riavviare il server chiude anche una connessione che aveva ancora aperta.

Niente è aperto senza autenticazione

Ogni richiesta al server deve portare il token del telefono. La connessione in tempo reale parte con un biglietto monouso valido 30 secondi, così il token non finisce mai in un indirizzo o in un log.

L'anteprima del sito che stai sviluppando non è mai pubblica: si apre solo dall'app, con un biglietto monouso scambiato con un cookie privato.

La prima volta che carichi su un server FTPS o SFTP, l'app ti mostra l'impronta del server e NomaDev la ricorda; se poi cambia, l'app ti avvisa prima di andare avanti.

Cosa tengono i nostri server, e nient'altro

Abbiamo un solo servizio: quello che inoltra le notifiche al telefono, perché la chiave Firebase che serve per mandarle non si può mettere dentro l'app.

Conserva il token delle notifiche del telefono, associato a un identificativo casuale che il tuo computer usa per chiedere una notifica. Per ogni notifica riceve il tipo (fatto, domanda, permesso, errore, anteprima), il nome del progetto e l'id della sessione; il testo lo scrive lui da frasi fisse, e non conserva niente di tutto questo.

Non riceve mai codice, messaggi d’errore, password o chiavi. Le statistiche d’uso, nell’app e sul sito, partono solo se le accetti: vanno a Google Analytics e non contengono mai codice, file o nomi di progetti.

E Claude?

Claude Code gira sul tuo computer con il tuo account, e manda ad Anthropic quello che gli serve per lavorare sul tuo codice — esattamente come quando lo usi dal terminale. NomaDev non aggiunge e non cambia niente in questo scambio. Vedi l'informativa privacy di Anthropic.

Domande sulla sicurezza

Potete vedere il mio codice?

No. Il telefono parla direttamente con il tuo computer, e il nostro unico servizio gestisce le notifiche, che non contengono mai codice.

Dove sono salvate le mie password FTP e SFTP?

Solo nel Keystore di Android del tuo telefono, e solo se scegli di ricordarle. Il computer le usa in memoria per un singolo caricamento.

Il terminale SSH passa dal mio computer?

No. Il telefono si collega direttamente al server. Chiavi e password del terminale stanno solo sul telefono, cifrate e sbloccate con la tua impronta o il PIN.

E se qualcuno trova l'indirizzo del mio server?

Senza il token di un telefono collegato ogni richiesta viene rifiutata, e per collegare un telefono nuovo serve un codice mostrato sul tuo computer.

E se perdo il telefono?

Lo scolleghi da un altro telefono collegato, in Impostazioni: da quel momento non può più collegarsi. Se l'app era aperta, riavvia anche il server, che chiude la connessione che aveva già.