Salta al contenuto principale

Area riservata clienti: come funziona e cosa serve

Come funziona un'area riservata clienti sul sito: come si entra, chi vede cosa, WordPress o web app, prezzo di partenza ed errori da evitare.

Sei cassette della posta di colori diversi, ognuna con il suo numero, in fila su una mensola di legno davanti a una siepe
Indice dei contenuti

Un’area riservata clienti è la parte del sito dove ogni cliente entra con il suo accesso e trova solo le sue cose: documenti, fatture, lo stato di una pratica, i messaggi scambiati con te. Per chi la usa sembra una pagina come le altre, con un login davanti. Per chi la costruisce la parte difficile è un’altra: fare in modo che il cliente numero 14 non veda mai, nemmeno per sbaglio, la cartella del cliente numero 16.

In sintesi: un’area riservata clienti funziona con tre pezzi: un accesso personale per ogni cliente, delle regole che decidono chi vede quali dati, e un pannello da cui tu carichi documenti e aggiorni le pratiche. Per pochi file statici può bastare WordPress con un plugin; se i clienti devono vedere dati che cambiano, serve una piccola web app. Da me parte da 3.500 euro.

Cos’è un’area riservata sul sito, in concreto

La definizione astratta non aiuta, quindi parto da cosa ci si mette dentro. Le richieste più comuni sono quattro:

  • Documenti personali: contratti firmati, preventivi, referti, planimetrie, report mensili. Il cliente li scarica quando gli servono, senza scriverti.
  • Stato di una pratica: “ricevuta”, “in lavorazione”, “pronta per la firma”. È la voce che fa risparmiare più telefonate.
  • Dati che il cliente inserisce lui: un modulo di anagrafica, le date di disponibilità, un file da caricare.
  • Storico: cosa è stato fatto, quando, da chi.

Se ti serve solo la prima voce, l’area riservata è piccola. Se ti servono lo stato delle pratiche o i dati inseriti dal cliente, stai già descrivendo un piccolo gestionale con una porta verso l’esterno, e conviene ragionarci come tale.

L’accesso è la parte che il cliente vede per prima e quella su cui si sbaglia di più, perché sembra un dettaglio. Le strade possibili sono tre.

La password classica è la più conosciuta e la più fragile: il cliente ne usa una che ha già altrove, la dimentica, ti scrive per farsela reimpostare. Il link via email (il cliente scrive il suo indirizzo e riceve un link che lo fa entrare) elimina la password del tutto, al prezzo di dipendere dalla casella di posta. L’accesso con Google o un altro account esistente è il più comodo per chi ce l’ha.

In GitWatchman, il servizio che ho costruito e gestisco da solo per seguire le nuove versioni dei repository GitHub, si entra solo con GitHub o Google: niente password da custodire. Per un’area clienti di uno studio non sempre si può fare, perché non tutti i clienti hanno un account Google o vogliono usarlo per questo.

Qualunque strada scegli, per gli account che vedono i dati di tutti (il tuo, quello della segreteria) aggiungerei un secondo fattore, cioè un codice temporaneo generato da un’app sul telefono. Il cheat sheet di OWASP, il progetto che raccoglie le buone pratiche di sicurezza per le applicazioni web, scrive che l’autenticazione a più fattori è di gran lunga la difesa migliore contro la maggior parte degli attacchi basati sulle password, e cita un’analisi di Microsoft secondo cui avrebbe fermato il 99,9% degli account compromessi. Nel pannello di amministrazione di CycleTour, la piattaforma di cicloturismo che ho sviluppato, l’accesso chiede password e codice TOTP: se qualcuno ruba la password, non basta.

Un dettaglio che pochi controllano: il messaggio di errore. La guida di OWASP sull’autenticazione chiede di rispondere con un messaggio generico, sia che l’utente non esista sia che la password sia sbagliata. Se il tuo login dice “questa email non è registrata”, sta dicendo a chiunque quali email sono tra i tuoi clienti.

Chi vede cosa: la regola deve stare nel database

Il modo ingenuo di costruirla è questo: la pagina chiede al database “dammi i documenti del cliente 14” e li mostra. Funziona. Il problema è che la regola “il cliente 14 vede solo i suoi” vive soltanto nel codice della pagina. Basta un errore in una pagina nuova, un filtro dimenticato in un’esportazione, e il database risponde volentieri con i documenti di tutti.

Il modo che uso io è mettere la regola nel database stesso, con la row level security di Postgres: per ogni tabella si scrive chi può leggere, inserire, modificare o cancellare ciascuna riga. La documentazione di Supabase è netta su cosa succede se la si dimentica: una tabella esposta senza queste regole è leggibile e scrivibile da qualunque ruolo che abbia i permessi su di essa. GitWatchman ha 48 migrazioni del database, CycleTour 17, e le regole di accesso sono scritte lì dentro.

Le regole valgono finché le richieste arrivano con l’identità del cliente. Supabase ha anche una chiave di servizio che le salta, e la stessa documentazione dice di tenerla solo sul server: non deve mai servire a rispondere a una richiesta che parte dal browser del cliente.

Per i file vale lo stesso discorso. Un PDF caricato in una cartella pubblica con un nome difficile da indovinare non è protetto: è solo nascosto, e un link inoltrato per sbaglio lo apre a chiunque. I documenti vanno in uno spazio privato, e il link per scaricarli si genera al momento, dopo aver controllato chi lo chiede.

Area riservata con WordPress o con una web app

Se il tuo sito è già su WordPress, la domanda viene da sé: non si può aggiungere lì? A volte sì.

WordPress ha di serie i ruoli utente. Quello più basso, il sottoscrittore, nella documentazione ufficiale è descritto come qualcuno che può soltanto gestire il proprio profilo. Da solo non protegge niente: una pagina diventa riservata solo se un plugin o un po’ di codice controllano chi ha fatto login. Per dire “questo file lo vede solo questo cliente” servono un plugin o codice scritto apposta, perché i ruoli dicono cosa un utente può fare, non quali documenti sono suoi.

Cosa ti serveWordPress con un pluginWeb app dedicata
Qualche pagina o guida visibile solo agli iscrittiVa beneEsagerata
Un file diverso per ogni cliente, caricato da tePossibile, dipende dal pluginVa bene
Stato delle pratiche, dati inseriti dal cliente, storicoDiventa fragileÈ il suo mestiere
Import dei clienti da un foglio ExcelSpesso a mano o con un altro pluginSi progetta dall’inizio
Chi controlla le regole di accessoIl plugin e i suoi aggiornamentiIl database

Il rischio della strada WordPress si vede col tempo: ogni plugin in più è un pezzo da aggiornare, e un’area clienti contiene i dati che meno vorresti esporre. Ne parlo più in generale nella guida alla sicurezza di un sito aziendale. Se invece stai valutando di cambiare piattaforma per altri motivi, il confronto completo è in WordPress o Next.js.

Quanto costa un’area riservata clienti

Per un’area riservata vera, con accesso per ogni cliente, permessi nel database, pannello di amministrazione e import dei dati da Excel o CSV, il mio prezzo di partenza è 3.500 euro: è la stessa voce “Web app” che trovi nei prezzi in home, perché tecnicamente è la stessa cosa.

Il prezzo sale con il numero di cose che il cliente può fare, non con il numero di clienti. Mostrare documenti è poco; far compilare moduli, gestire firme, notifiche via email e più ruoli interni (titolare, segreteria, collaboratore esterno) è parecchio di più. Se l’area riservata è il primo passo verso un gestionale vero e proprio, conviene leggere anche quanto costa un gestionale personalizzato: molte delle voci di spesa sono le stesse.

Dopo la consegna resta un costo che non va dimenticato: aggiornamenti delle librerie, backup, qualche modifica. In CycleTour il backup del database è settimanale e lo fa una procedura programmata con GitHub Actions, non la memoria di qualcuno.

Errori comuni quando si crea un’area riservata

  • Un’unica password condivisa per tutti i clienti, magari scritta in una email. Non sai chi è entrato e non puoi togliere l’accesso a uno solo.
  • File in cartelle pubbliche con nomi “segreti”. Il link circola, il file resta aperto.
  • Permessi solo nell’interfaccia: il pulsante non si vede, ma la richiesta al database passa lo stesso.
  • Nessun modo di chiudere un account quando un rapporto finisce. Succede più spesso di quanto si pensi, e i documenti restano lì.
  • Partire dalla grafica invece che dalla lista di chi deve vedere cosa. La schermata si rifà in un pomeriggio, le regole di accesso no.

Domande frequenti

Un’area riservata clienti è obbligatoria per legge?

No, non c’è un obbligo generale di averne una. Se però la crei e ci metti dati personali dei clienti (documenti, recapiti, dati economici), restano dati personali soggetti al GDPR, come quelli che oggi tieni in email o in un foglio Excel. Cambia il posto dove vivono, ed è una buona occasione per rileggere l’informativa privacy. Se tratti dati sanitari le cautele sono maggiori: parlane prima con chi ti segue sulla privacy.

Posso aggiungere l’area riservata al sito che ho già?

Sì, nella maggior parte dei casi. Una web app dedicata può vivere su un sottodominio (per esempio area.tuosito.it) accanto al sito attuale, con un pulsante “Accedi” nel menu. Il sito vetrina resta com’è, e l’area clienti si può aggiornare senza toccarlo. Su WordPress si può anche costruire dentro lo stesso sito, con i limiti visti sopra.

I miei clienti devono installare un’app?

No. Un’area riservata fatta come web app si apre dal browser, sul computer o sul telefono, con lo stesso indirizzo. Se serve un’icona sulla schermata del telefono, la si può rendere installabile come PWA, cioè un sito che si aggiunge alla home come un’app: CycleTour funziona così. Niente passaggi dagli store di Apple o Google.

Quanto tempo serve per costruirla?

Dipende da cosa contiene, e un numero dato prima di vedere la lista di chi vede cosa sarebbe inventato. Login, documenti per cliente e pannello per caricarli sono la base; lo stato delle pratiche, i moduli e l’import dei dati esistenti allungano i tempi. Prima di iniziare scrivo le milestone, così sai cosa vedrai e in che ordine.

Prima di chiedere un preventivo: la lista di chi vede cosa

Prima di parlare di schermate, prendi un foglio e scrivi tre colonne: chi entra (clienti, segreteria, tu, collaboratori), cosa vede ciascuno, cosa può modificare. Aggiungi quanti clienti hai oggi e dove stanno i loro dati adesso (cartelle, email, Excel). Con quella lista in mano un preventivo si fa in fretta, e qualunque sviluppatore ti sa dire se basta WordPress o serve una web app.

Se vuoi farla insieme, scrivimi dalla home: guardo la lista e ti dico quale delle due strade ha senso per te.

Prossimo passo

Hai un progetto in mente? Parliamone.

Continua a leggere