In qualità di fondatore di Simple Analytics, mi sono imbattuto in problemi di privacy durante la realizzazione del nostro prodotto. Sulla base di queste conoscenze, vorrei mostrarvi alcuni consigli pratici per migliorare la privacy dei vostri visitatori. Alcuni consigli sembrano molto logici, ma possono essere difficili da attuare. Per questo motivo ho fornito degli esempi per ogni consiglio, in modo che voi o il vostro team possiate applicarli senza dover fare tutte le ricerche del caso.
In questo post, ho approfondito i temi dei servizi di terze parti, dei fornitori di CDN, dei widget sociali, dell'etica nei confronti dei visitatori, delle e-mail di marketing, dell'archiviazione dei dati, dei dati PII, dell'anonimizzazione IP, del syslog e dell'autenticazione a due fattori.
Alcuni suggerimenti potrebbero diventare un po' tecnici e, se non avete un background tecnico, potete tranquillamente ignorarli e inoltrarli al vostro team tecnico.
- Servizi di terze parti
- Non date troppo potere al vostro fornitore di CDN
- Rimuovere i widget sociali
- Non ingannate i vostri visitatori
- Dove si conservano i dati
- Non registrate o chiedete dati PII quando non sono necessari
Entriamo nel vivo.
Servizi di terze parti
La maggior parte delle aziende utilizza molti servizi di terze parti. Vi aiutano a fornire un servizio migliore ai vostri clienti, il che è ottimo. Ma è difficile sapere quanto questi servizi siano rispettosi della privacy. Sebbene possiate conoscerli tutti (è richiesto dal GDPR), non sapete se potete fidarvi di loro. È salutare pensare sempre ai servizi di terze parti come non affidabili e utilizzarli così nel proprio prodotto. Ci sono alcuni modi per limitare il loro effetto sui visitatori.
Caricare script di terze parti solo quando è necessario
Ogni tanto è necessario utilizzare script esterni. Ad esempio, potreste utilizzare un servizio di chat o un fornitore di pagamenti. Soluzione: Caricare questi script solo nelle pagine in cui li si utilizza.
Nel caso di una chat, è possibile che vengano caricati su ogni pagina, ma nel caso di un fornitore di pagamenti non è certo la stessa cosa. Non includete questi script in ogni pagina.
Quando si utilizza una chat in ogni pagina, si può essere un po' creativi. Ad esempio, si può avere un piccolo pulsante che carica lo script esterno solo quando si fa clic su di esso.
Ci sono alcuni modi per ottenere questo risultato. È possibile farlo tramite servizi come Confirmic, che offre una funzione di blocco degli script, oppure manualmente.
Vedere questi esempi su come implementarlo:
Mostra esempio di codice Confirmic
Mostra un esempio di codice manuale
Per verificare se il vostro sito utilizza script di terze parti potete utilizzare il Request Map Generator creato da Simon Hearne (grazie a Jan Klimo). Per Simple Analytics si presenta così:
Nel diagramma qui sopra si vedono solo le richieste dirette ai server di Simple Analytics: simpleanalytics.com
, simpleanalyticscdn.com
e simpleanalytics.io
. Il cerchio rosa è il video della nostra home page, che consuma la maggior parte dei byte. Utilizziamo anche un provider di pagamenti esterno, ma carichiamo lo script solo quando il cliente clicca sull'iscrizione, quindi in questa immagine non si vede alcuno script esterno.
Fate un confronto con un altro SaaS come Intercom:
Ci sono molti script esterni caricati da tutti i tipi di domini diversi. Non sto dicendo che questo sia un bene o un male, ma è una buona pratica per verificare se tutte queste parti esterne sono necessarie. Eseguire il Request Map Generator e vedere quali servizi non sono necessari.
Ricordate che tutte le parti esterne possono accedere ai dati visualizzati sulla pagina. Se i visitatori hanno effettuato l'accesso e vedono dati critici, anche le parti esterne possono vederli.
Non date troppo potere al vostro fornitore di CDN
Se utilizzate un CDN, gli state fornendo dati sui vostri visitatori e il potere di caricare uno script diverso da quello richiesto dai vostri visitatori.
Integrità delle sotto-risorse
Per evitare che il fornitore di CDN manometta la fonte dei vostri script, potete usare la Subresource Integrity (SRI; l'attributo di integrità
dei vostri script). È necessario creare un hash della fonte dello script e includerlo nel tag dello script tramite l'attributo integrity
. Per generare l'hash di integrità si può usare srihash.org o report-uri.com.
<script src="https://cdn.example.com/script.js" integrity="sha384-..."></script>
Attributo cross-origine
L'attributo crossorigin
sugli elementi multimediali è un attributo di impostazione CORS. È necessario per caricare script da altri domini (ad esempio un dominio CDN). La parola chiave anonimo
significa che non ci sarà alcuno scambio di credenziali utente tramite cookie e altri dati tra il vostro sito web e altri domini.
Si specifica in questo modo
Attributo "Referrer policy
Per evitare che i visitatori sappiano quale pagina stanno visualizzando, potete aggiungere l'attributo referrerpolicy
con il valore no-referrer
ai vostri tag di script.
Mostra un esempio di codice
Anche se in questo caso non si invia il referrer, il browser invia l'intestazione origin con le richieste CORS. Ciò significa che il provider CDN riceve comunque il dominio su cui atterrano i visitatori. Se registra gli IP, può tracciare il comportamento di navigazione dei visitatori. Questo problema può essere risolto solo scegliendo un provider CDN che anonimizzi gli indirizzi IP. L'unico provider CDN che attualmente offre l'anonimizzazione degli IP è BunnyCDN (non siamo affiliati a BunnyCDN).
Se si combinano tutte le caratteristiche di cui sopra, l'HTML avrà un aspetto simile a questo
Se si aggiungono script dinamicamente, è possibile specificare le caratteristiche di cui sopra come proprietà. Le proprietà sono sensibili alle maiuscole e alle minuscole.
Sia crossOrigin
che referrerPolicy
hanno una lettera maiuscola al loro interno
Politica di sicurezza dei contenuti
Per aggiungere un ulteriore livello di sicurezza agli script caricati, è possibile utilizzare una Content Security Policy (CSP). Il CSP è un ulteriore livello di sicurezza che aiuta a rilevare e a mitigare alcuni tipi di attacchi (compresi gli attacchi XSS (Cross Site Scripting) e di iniezione di dati).
Ci sono alcuni modi per creare la vostra politica: utilizzare un server a cui i browser inviano automaticamente i rapporti (o utilizzare un servizio come report-uri.com o Csper che lo fa per voi) o generare un rapporto da soli. Esistono alcuni strumenti per aiutarvi a creare un rapporto da soli: Report URI e cspisawesome.com hanno una procedura guidata, 4ARMED e Csper hanno un'estensione per il browser e Mozilla ha un'ottima documentazione.
Quando si crea il criterio, è possibile specificarlo tramite un tag <meta>
o un'intestazione.
Avete paura di bloccare risorse importanti? Testate il vostro CSP usando Content-Security-Policy-Report-Only per segnalare solo le risorse senza bloccarle.
Rimuovere i widget sociali
Le società di social media hanno una cattiva reputazione per la raccolta di dati dai visitatori. Esistono molti plugin e modi per tracciare gli utenti. Non sono i visitatori a scegliere di essere tracciati da queste aziende, ma voi.
Se siete visitatori, è consigliabile utilizzare un blocco degli annunci come uBlock Origin. Si tratta di un'estensione del browser ben sviluppata che rimuove tutti i tracker e gli annunci dalle vostre visite. È presente un pulsante gigante di attivazione/disattivazione per il sito in cui ci si trova. Rende la vostra esperienza di navigazione più sicura.
I visitatori possono fare qualcosa da soli, ma ci saranno sempre persone che non sanno di questo tracciamento o non sanno come impedirlo. Ecco perché l'UE ha introdotto il GDPR, la California il CCPA, il Brasile il LGDP e il Regno Unito il PECR.
Il 29 luglio 2019, la Corte di giustizia dell'Unione europea (la "CGUE") ha stabilito che un'azienda che incorpora sul proprio sito web un social plugin, come il pulsante "Mi piace" di Facebook, può essere considerata un responsabile del trattamento dei dati [...] - fieldfisher.com
Sebbene non possiate controllare ciò che le piattaforme dietro i vostri widget fanno con i dati dei vostri clienti, siete comunque responsabili di ciò che accade con questi dati.
Sostituire il pulsante di condivisione di Facebook
Quando aggiungete un widget di Facebook come un pulsante di condivisione, Facebook vi consiglia di utilizzare i suoi script. Questo è ottimo per loro perché possono raccogliere più dati sui vostri visitatori. Fortunatamente, Facebook offre un altro modo per non utilizzare i suoi script.
Ecco un esempio con pulsanti personalizzati e un semplice link di condivisione. Consiglio vivamente di utilizzare l'implementazione dei link invece di quella degli script.
Assicurarsi di aggiungere
rel="noopener"
orel="noreferrer"
per evitare che altre pagine accedano all'oggetto window con la proprietàwindow.opener
. Ciò potrebbe consentire a un'altra pagina di reindirizzare la vostra pagina a un URL dannoso. Si tratta del cosiddetto tabnabbing inverso. Modifica: i browser impostano implicitamenterel=noopener
per qualsiasi linktarget=_blank
dal 2021.
HTML per i pulsanti di cui sopra
CSS per i pulsanti di cui sopra
L'implementazione del link è un semplice collegamento che apre la pagina di condivisione di Facebook per i visitatori. È possibile inserire il link dietro un pulsante o un link di testo sul proprio sito web.
L'implementazione del link spiegata per i non addetti ai lavori
Supponiamo di aver bisogno di questo link per Facebook:
Vedete molti caratteri strani in questo URL (link). Questo perché il link è codificato come URL. Utilizzate urlencoder.io per codificare facilmente gli URL del vostro sito web:
Prefissate l'output di urlencoder.io con https://www.facebook.com/sharer/sharer.php?u=
e aggiungete &src=sdkpreparse
dietro di esso e avrete il vostro link di condivisione su Facebook. Senza il tracciamento e la raccolta di dati invasivi per la privacy. Ora potete condividere questo link con i vostri sviluppatori o utilizzarlo nel CMS del vostro sito web di marketing.
Tweet incorporati in Twitter
Su Internet si vede che il widget di Twitter è molto utilizzato. Ma è necessario inviare i dati dei vostri visitatori a Twitter quando vogliono solo vedere un tweet? Uno screenshot va benissimo:
Non ingannate i vostri visitatori
Ingannare i visitatori inducendoli a fare qualcosa che non vogliono fare è sbagliato e non dovreste farlo. A volte è bello aprire il vostro sito web e seguire il vostro flusso come un nuovo cliente. Fate attenzione alle cose poco chiare e a tutti i popup che vedete.
Cookie banner
Navigando su Internet troverete molti esempi di siti web che cercano di ingannarvi con un opt-in per permettervi di tracciarvi.
Ad esempio la home page del New York Times. Quando vedete una croce (X) normalmente chiudete una finestra di dialogo senza accettare ciò che vi viene chiesto. Per il New York Times è uguale a "Accetto":
Per favore, non fatelo.
È un argomento correlato a quello di non ingannare i visitatori, ma voglio dedicare una sezione a parte alle sole e-mail.
Email di marketing
Se avete un'attività commerciale, l'utilizzo dell'indirizzo e-mail dei vostri clienti ha un grande valore. Utilizzatelo con saggezza per informarli sulle nuove funzionalità, aiutarli a orientarsi nel vostro strumento, ecc. È un vantaggio per la vostra attività. Ma se inviate e-mail di marketing ai vostri clienti, assicuratevi che vogliano essere iscritti. Durante l'iscrizione, potete chiedere se siete d'accordo a inviare loro e-mail sul vostro strumento/servizio, oppure se sono d'accordo a inviare guide o suggerimenti per la configurazione. Fate attenzione a specificare come utilizzerete la loro email e assicuratevi di usarla solo per questo scopo.
Tracciamento delle e-mail
È più difficile disabilitare il tracciamento delle e-mail che abilitarlo. Ecco perché la maggior parte delle e-mail di marketing contiene dei tracker. Il tasso di apertura è considerato impreciso a causa della disabilitazione delle immagini da parte del cliente:
[...] un'e-mail viene conteggiata come 'aperta' solo se il destinatario riceve anche le immagini incorporate nel messaggio, e una grande percentuale di utenti di e-mail ha probabilmente attivato il blocco delle immagini sul proprio client di posta elettronica. [...] - blog.hubspot.com
Immagini nelle e-mail
Quando un'e-mail ricca di immagini non viene scaricata completamente e viene visualizzata dall'utente, potrebbe finire per essere visualizzata come questa per l'abbonato:
Quando si aggiungono immagini alle email e non le si incorpora nelle email, l'aspetto può essere molto brutto. Sempre più servizi di posta elettronica smetteranno di visualizzare i tracker delle email e quindi anche le immagini. Il nuovo servizio HEY.com blocca i cosiddetti pixel di tracciamento. Credo che ne seguiranno altri.
Con Simple Analytics amiamo condividere rapporti settimanali e mensili via e-mail. Quando i clienti hanno attivato il servizio, inviamo loro un'e-mail con tutte le immagini incorporate. Nessun tracker o immagine remota. Non c'è bisogno di connettersi a nulla al di fuori del loro client di posta elettronica. Restituiamo loro la privacy: se la meritano!
La funzione Rapporti e-mail di Simple Analytics
Come mantenere una buona reputazione
Un altro aspetto delle e-mail di marketing è l'intestazione di annullamento dell'iscrizione. Assicuratevi di aver impostato l'intestazione perché migliora la reputazione delle vostre e-mail. L'intestazione potrebbe essere simile a questa:
Lista-annullamento: <https://example.com/unsub/?uuid=14b2-b2a1>, <mailto:unsubscribe@example.com>
In molti client di posta elettronica, il link di annullamento dell'iscrizione è posizionato vicino al pulsante di spam. Per evitare di danneggiare la vostra reputazione, volete che le persone si cancellino invece di premere il tasto spam.
Dove si conservano i dati
È importante memorizzare i dati in un Paese che protegga la privacy dei suoi cittadini e di quelli al di fuori del Paese. Con Simple Analytics abbiamo spostato i nostri server in Islanda quando abbiamo pensato che fosse il Paese migliore dal punto di vista della privacy. Secondo il Freedom House Internet Freedom Scores l'Islanda è ancora l'opzione migliore:
Elenco dei punteggi di libertà di Internet di Freedom House o solo Islanda.
In seguito ci siamo resi conto che l'Islanda non era l'opzione migliore, dal punto di vista del provider.
Ecco perché
<ol><li>L'iniziativa islandese per i media moderni è stata adottata dal parlamento ma non è diventata legge (quindi non è il paradiso della libertà di Internet che pensavamo).</li><li>Il nostro provider ha dichiarato di essere il più grande in Islanda, ma non era maturo come i provider più grandi in Europa, il che ha messo a rischio la sicurezza dei nostri server e della nostra infrastruttura.</li><li>Quest'anno hanno avuto due interruzioni di servizio.</li><li>I cavi internet per l'Islanda sono piuttosto lenti. Sebbene sia geograficamente ideale - si trova tra il Nord America e l'Europa - in pratica i Paesi Bassi sono un luogo più veloce per entrambi.</li><li>Non vogliamo trasferirci in Svizzera perché sarebbe solo una mossa di marketing. L'UE offre leggi sulla privacy migliori della Svizzera.</li><li>Dobbiamo comunque spostarci perché il nostro attuale provider non offre i server potenti di cui abbiamo bisogno.</li><li>Il secondo provider più importante in Islanda ha la sede legale a Hong Kong, che non è il luogo preferito in cui vogliamo conservare i nostri dati.</li></ol><blockquote>
Copiato dalla pagina dei documenti sulle sedi.
</blockquote>Abbiamo chiesto ai nostri clienti se sarebbero stati d'accordo con lo spostamento dall'Islanda ai Paesi Bassi e tutti coloro che hanno votato sono stati d'accordo con la nostra decisione.
Fate attenzione a dove mettete i dati dei vostri visitatori. Fate delle ricerche sul provider di hosting che state utilizzando e sul Paese in cui è ospitato. Non scegliete l'opzione più economica senza sapere perché è economica.
Non registrate o chiedete dati PII quando non sono necessari
Le informazioni di identificazione personale (PII) sono informazioni che, se utilizzate da sole o con altri dati rilevanti, possono identificare un individuo. Capita ancora spesso che siti web o app chiedano di fornire dati personali di cui non hanno bisogno.
Non chiedete nomi e cognomi...
...a meno che non ne abbiate davvero bisogno. Lasciate che le persone decidano da sole se aggiungere il proprio nome completo. Chiedete solo il nome se volete rivolgervi alle persone nelle vostre e-mail di marketing, ma non chiedete il nome completo.
Per le persone che leggono e che sono stanche di inventare nomi falsi: ci sono molti servizi che aiutano a creare un nome falso.
Anonimizzazione dell'IP
Questa parte è piuttosto tecnica, quindi abbiate pazienza. Se siete un manager, inoltrate questo messaggio ai vostri sviluppatori. L'anonimizzazione dell'IP è la cosa più logica da fare sui vostri server quando si parla di privacy. Tuttavia, non ci sono molti esempi di come farlo. Molti processi (applicazioni) sui vostri server registrano dati. Ad esempio, NGINX registra i dati di ogni richiesta in arrivo per impostazione predefinita (ma è personalizzabile). Questo è ottimo per il debugging, ma non per la privacy degli utenti. Con NGNIX non è possibile formattare i log degli errori, quindi gli errori saranno sempre nello stesso formato. Questo è molto poco rispettoso della privacy, perché contiene l'indirizzo IP completo dell'utente e di solito l'User-Agent (che può contenere identificatori poco chiari quando si usa l'app di Facebook).
Probabilmente potete indovinare alcuni elementi di questo suffisso User-Agent di Facebook, ma per me non è tutto chiaro:
[FBAN/FBIOS;FBAV/221.0.0.0.0;FBBV/154514034;FBDV/iPhone9,4;FBMD/iPhone;FBSN/iOS;FBSV/12.3.0;FBSS/3;FBCR/Siminn;FBID/telefono;FBLC/it_GB;FBOP/5;FBRV/155138002]
. Non sembra che traccino i loro utenti tramite il suffisso User-Agent, ma almeno manomettono lo User-Agent.
Disabilitare la registrazione dell'IP in HAProxy
Per creare una propria registrazione per i messaggi di errore e di log normale, è possibile personalizzare il formato del log. È spiegato meglio sul blog haproxy.com. Si veda il nostro esempio di codice per vedere come vengono registrati i messaggi:
Configurazione per disabilitare la registrazione IP in HAProxy
Un esempio di output:
Filtri nel syslog
Simple Analytics utilizza NGINX che, nel nostro caso, registra su rsyslog, spesso indicato come syslog. rsyslog è spesso incluso nelle distribuzioni Linux(sito ufficiale). Fortunatamente rsyslog è dotato di un ottimo modulo chiamato mmanon. Questo modulo può essere usato per filtrare gli indirizzi IP sia v4 che v6 dalla versione 7.3.7 di rsyslog.
Come implementare l'anonimizzazione con rsyslog
Sul proprio server è possibile verificare quale versione di <em>rsyslog</em> si ha eseguendo rsyslogd -v
.
È possibile abilitare l'anonimizzazione IP aggiungendo le seguenti righe al file di configurazione di <em>rsyslog</em>. Il file di configurazione si trova solitamente in /etc/rsyslog.conf
o /etc/rsyslog.d/50-default.conf
.
Dopo aver modificato questo file, assicurarsi di riavviare <em>rsyslog</em> con service rsyslog restart
.
Se si vuole andare più a fondo, è possibile impostare alcuni filtri avanzati per rimuovere i dati sensibili dai file di log o dai servizi di log.
Si può creare un file di configurazione di syslog in /etc/syslog/....
Ho creato un file chiamato /etc/rsyslog.d/30-anonymize.conf
contenente:
Si può fare molto di più, nella nostra configurazione nascondiamo IP, carte di credito e agenti utente.
Utilizzare l'autenticazione a due fattori
Questo aspetto è più legato alla sicurezza che alla privacy, ma è importante in ogni caso.
Se volete proteggere i dati dei vostri utenti e impedire ad altri di accedere ai loro dati, utilizzate un sistema di autenticazione a due fattori. Non utilizzate gli SMS. Utilizzate TOTP (Time-based One-time Password), che ha molte applicazioni e integrazioni. Non richiede la connettività a Internet e può essere installato su più dispositivi.
Conclusioni
Lavorando a Simple Analytics, combatto costantemente contro lo status quo, trovando modi di gestire i dati dei visitatori che rispettino la privacy. Ci sono troppe poche linee guida su come evitare il tracciamento nella propria attività.
Leggete la discussione su Hacker News
Spero che questo post renda il web un po' più rispettoso della privacy. Fatemi sapere quali suggerimenti dovrei aggiungere.