Ogni volta che includi uno script da un dominio esterno ti stai fidando di quel dominio. per esempio. se il tuo sito è example.com
e hai il seguente codice sulla tua home page
<script src="//example.edu/tracking_script.js"></script>
allora example.com
è completamente fidato di example.edu
a non fare nulla di dannoso dentro tracking_script.js
. example.edu
avrà il pieno controllo dello scripting lato client e potrebbe fare tutto ciò che uno script lato client ospitato su example.com
potrebbe fare.
Lo stesso vale per Google Analytics: stai aggiungendo il codice dello script alla tua pagina che crea il riferimento esterno js
. Se Google volesse, potrebbe adattare il proprio script per fare qualsiasi cosa sul lato client delle tue pagine. Lo stesso vale per una situazione in cui il sito Web di Google Analytics è compromesso: qualsiasi utente malintenzionato controllerà tutti i domini tramite Analytics.
Scontando qualsiasi cosa dannosa, il vantaggio di Google è che possono aggiornare il codice lato client di Analytics senza che i webmaster debbano fare aggiornamenti dalla loro parte. Quindi, se aggiornano una funzione lato server, possono aggiornare la controparte lato client in modo appropriato e ogni sito nel mondo eseguirà automaticamente il nuovo codice lato client per i propri visitatori.
postMessage
, pur mantenendo un perimetro di sicurezza tra il tuo dominio e GA, non consentirebbe alcun aggiornamento di script sul lato client che potrebbe essere necessario affinché GA funzioni dopo un aggiornamento lato server. (Nota che non hai bisogno di un IFrame per comunicazioni cross-domain sicure, CORS abilitati da parte di Google consentirebbe al tuo sito per inviare una richiesta HTTP POST per registrare ogni visita di pagina.)
Quando utilizzi un prodotto Google, sarai al sicuro, incluso il riferimento ai copioni, quindi non è necessario che ciò avvenga in un modo diverso. Tuttavia, avere riferimenti di script a entità meno conosciute la cui sicurezza potrebbe non essere del tutto all'altezza dello standard di Google può essere motivo di preoccupazione. In questi casi sarebbe prudente fare affidamento su una tecnologia lato client più sicura piuttosto che su quella di JSONP.