View Issue Details

IDProjectCategoryView StatusLast Update
5065Composrcorepublic2023-01-29 01:35
ReporterAdam Edington Assigned ToGuest  
PrioritynormalSeverityfeature 
Status newResolutionopen 
Summary5065: Google fonts violating GDPR / General privacy around IP and referrer transfer to third parties / Need superset of cookie consent
DescriptionAt the beginning of this year, a website in Germany was fined 100 euros for using Google Fonts which violates GDPR by collecting IP addresses. We can enable a Google Font via HTML_HEAD.tpl in v10 but the latest advice is to run these fonts locally.

This website ( https://google-webfonts-helper.herokuapp.com/fonts ) grabs all the necessary files to host a chosen Google font locally. Removing the option to enable a remote Google Font in the header and adding some documentation about how to serve these fonts locally might be advisable given a precedent has been set.
Additional Informationhttps://www.bitdefender.com/blog/hotforsecurity/german-website-fined-100-euros-after-court-says-googles-font-library-violates-gdpr/
https://www.gdpreu.org/the-regulation/key-concepts/personal-data/
https://2gdpr.com/
TagsRoadmap: Over the horizon (partial implementation), Type: Legal compliance / Privacy
Attach Tags
Time estimation (hours)
Sponsorship open

Sponsor

Date Added Member Amount Sponsored

Relationships

related to 4914 Not AssignedGuest Radical Privacy (holding issue) 

Activities

Chris Graham

2022-11-20 01:26

administrator   ~7662

I'll look at this, but I want to note that this is exactly the same situation as hotlinking an image, or loading a JavaScript library off a CDN - both extremely common things to do.

Adam Edington

2022-11-20 01:47

administrator   ~7663

I would have assumed the website requesting the font/image/js is the IP that got shared, not the actual user of the website. I've learnt something new. Imagine getting a massive fine for not knowing that using a CDN was breaching GDPR. 100 euros was a slap on the wrist, but GDPR is serious business when it comes to how much they can fine you.

PDStig

2022-11-20 07:03

administrator   ~7666

Last edited: 2022-11-20 07:05

Yes, from what I read, what happened was the IP addresses of the users got shared to Google via the loading of Google Fonts. This sets a dangerous precedence though; there are many ways an IP address can be shared and technically violate the GDPR. The use of the StopForumSpam service, for example, could technically violate GDPR (though we mention it in the Privacy Policy so I wonder if that is legally covered). Or, Composr reporting errors to Chris if said errors happened to contain IP addresses in them. Unfortunately, if this is what the GDPR is going to enforce, then there might not be any other option than to comply. Although, I wonder if merely sticking this info in the Privacy Policy is good enough.

Adam Edington

2022-11-20 20:20

administrator   ~7667

Last edited: 2022-11-20 20:29

Adding the info to the Privacy Policy is probably a good thing to do. Currently the compo.sr website is not using cookie consent so google analytics and youtube cookies are flagged as problematic (in the EU) when checking compliance. Youtube flagged on "Business by Manoj Sree" theme in addons. Not sure about analytics but using the youtube-nocookie domain (also in galleries) would solve the latter without consent being needed.

Chris Graham

2022-11-22 17:14

administrator   ~7696

Okay I've had a look at the ruling, as I wanted to know if it was an issue with IPs and/or referrers. It's just IPs.

"The unauthorized disclosure of the plaintiff's dynamic IP address by the defendant to Google constitutes a violation of the general right of personality in the form of the right to informational self-determination according to ยง 823 Para. 1 BGB," the ruling stated, as algorithmically translated. "The right to informational self-determination includes the right of the individual to disclose and determine the use of their personal data."

This is pretty absurd. An IP alone only identifies that some machine on a particular network was turned on at some time and went somewhere-unknown to request a common font. That's an incredible stretch of personally-identifying.

This judgement would block:
 - hot linked images
 - CDNs
 - Any remote-hosted ad hosting platform
 - Any remote-hosted analytics platform

If we were talking about referrers, that's another story. I can legitimately see why we would want to block referrers to Google Fonts and CDNs, as they have no business knowing it (actually we could consider Google Fonts a kind of CDN).
When it comes to hot linked images, or even outbound links, it becomes thorny. For privacy we could say no outbound link should pass a referrer, yet knowing referrers is very basic for digital marketing. It probably should be an option to block all referrers, on by default.

Chris Graham

2022-11-22 17:48

administrator   ~7697

Last edited: 2022-11-22 17:53

Thinking about this some more, it's extremely thorny.

We can use "referrerpolicy" to limit individual a/area/img/iframe/script/link elements to not send referrers.
However, referrerpolicy does not allow granular limits on video/source/audio/object/track/embed/input (https://github.com/w3c/webappsec-referrer-policy/issues/160)
We need fine-grained control really. We also need WYSIWYG to be able to set that control.
I think it'll be a while until everything catches up.

Looking at our code, we currently have non-bundled addons that hotlink to Google for data-map embeds (COUNTRIES_ON_MAP and PINS_ON_MAP templates), eBay and Amazon for embeds, Facebook embeds, and Twitter embeds.
In bundled, we have Google Translate for language editing, and Google Analytics. Also any kind of media system remote video embed, like YouTube.
All this stuff is potentially going to want to be able to check referrers for security reasons, and if it's not by HTTP it could be by JavaScript.

Chris Graham

2022-11-22 18:54

administrator   ~7702

I have added referrerpolicy for Google Fonts. This solves the referrer issue for Google Fonts, but not the IP issue. I'm considering it a special case, and for v12 we may make a separate broader set of changes.

I have disabled tracking on YouTube and Vimeo embeds using their method to do so.

Changes potentially for v12...

Add to privacy policy if:
1) Google Fonts is enabled (explain IPs may be leaked)
2) Google Analytics is enabled (not just about cookies as it is now) (explain IPs and origins may be leaked)
3) Google Translate is enabled for translating (explain IPs and origins may be leaked)

Add new privacy policy section regarding embeds, and document the following embeds could leak visitor IPs and origins and tie users to a remote site's own cookies, and that's all outside our control (as JS code we are not directly prescribing is running):
1) YouTube video (new option to disable YouTube embeds, so privacy clause only shows if enabled)
2) Vimeo video (")
3) Facebook video (" - and disabled by default)
4) oEmbeds (list all domains oEmbed is enabled for, or omits clause if no oEmbed domains are listed)
5) Data maps/eBay/Amazon/Facebook/Twitter (if the relevant non-bundled addons installed)

New privacy option to turn on <meta name="referrer" content="same-origin" /> in the header easily to entirely block referrers that aren't explicitly inclusion-listed. On by default. Must clearly explain that partners cannot enable embed/API access from your server or track your outbound links based on referrer - unless you are individually marking things up to allow referrers, and that is not currently possible for videos/audio. Partners could implement tracking via tracking IDs on URLs, or where applicable via the JavaScript code they run. In any case any such tracking should be reported by manually adding it to your privacy policy.

Disable all embeds until Cookie Consent (or some replacement) is properly agreed to. Needs to be more than a yes/no now.
Other stuff discussed in the privacy policy may need to be disabled too if not agreed to. Case-by-case basis, as we can't just disable IP block checks.

4914 talks about a new privacy tutorial. Document stuff discussed here there too.

Adam Edington

2022-11-22 19:57

administrator   ~7704

Last edited: 2022-11-22 22:20

I'm not sure if this is the same Cookie Consent that Silk Tide created originally but it claims to handle GDPR and ePrivacy https://www.cookieconsent.com/ - It doesn't allow the banner to only show in countries which require it (at least in the free version), but perhaps Tempcode could do that.

There is also https://cookieconsent.popupsmart.com/gdpr-cookie-consent/ which is free and allows a company logo and also what I assume is the older version (still claims GDPR compliance but offers more layout/theme options) @ https://cookieconsent.popupsmart.com/.

Another which is free @ https://tarteaucitron.io/en/ - easy to add services with autocomplete dropdown.

Adam Edington

2022-11-22 22:33

administrator   ~7705

Just read that youtube-nocookie does set a cookie if a video is engaged with, but at least it isn't setting them if not.

Guest

2023-01-29 01:35

reporter   ~7887

We should rename the maintenance code eu_cookies to something generic like eu_privacy

Add Note

View Status
Note
Upload Files
Maximum size: 32,768 KiB

Attach files by dragging & dropping, selecting or pasting them.
You are not logged in You are not logged in. This means you will not get any e-mail notifications. And if you reply, we will not know for sure you are the original poster of the issue.

Issue History

Date Modified Username Field Change
2022-11-20 01:16 Adam Edington New Issue
2022-11-20 01:19 Adam Edington Description Updated
2022-11-20 01:21 Adam Edington Assigned To => Chris Graham
2022-11-20 01:21 Adam Edington Status Not Assigned => Assigned
2022-11-20 01:25 Adam Edington Description Updated
2022-11-20 01:26 Chris Graham Note Added: 0007662
2022-11-20 01:47 Adam Edington Note Added: 0007663
2022-11-20 07:03 PDStig Note Added: 0007666
2022-11-20 07:05 PDStig Note Edited: 0007666
2022-11-20 19:28 Adam Edington Additional Information Updated
2022-11-20 20:20 Adam Edington Note Added: 0007667
2022-11-20 20:21 Adam Edington Additional Information Updated
2022-11-20 20:29 Adam Edington Note Edited: 0007667
2022-11-20 20:30 Adam Edington Note View State: 0007667: public
2022-11-22 17:14 Chris Graham Note Added: 0007696
2022-11-22 17:48 Chris Graham Note Added: 0007697
2022-11-22 17:51 Chris Graham Note Edited: 0007697
2022-11-22 17:53 Chris Graham Note Edited: 0007697
2022-11-22 17:56 Chris Graham Severity Security Hole => Feature or Request
2022-11-22 17:56 Chris Graham Category General => core
2022-11-22 18:11 Chris Graham Tag Attached: Type: Legal compliance / Privacy
2022-11-22 18:11 Chris Graham Relationship added related to 4914
2022-11-22 18:22 Chris Graham Tag Attached: Roadmap: v12 partial implementation
2022-11-22 18:22 Chris Graham Summary Google fonts violating GDPR => Google fonts violating GDPR / General privacy around IP and referrer transfer to third parties
2022-11-22 18:54 Chris Graham Note Added: 0007702
2022-11-22 19:57 Adam Edington Note Added: 0007704
2022-11-22 20:20 Adam Edington Note Edited: 0007704
2022-11-22 20:28 Adam Edington Note Edited: 0007704
2022-11-22 21:09 Adam Edington Note Edited: 0007704
2022-11-22 22:17 Adam Edington Note Edited: 0007704
2022-11-22 22:20 Adam Edington Note Edited: 0007704
2022-11-22 22:33 Adam Edington Note Added: 0007705
2022-12-07 13:58 Chris Graham Summary Google fonts violating GDPR / General privacy around IP and referrer transfer to third parties => Google fonts violating GDPR / General privacy around IP and referrer transfer to third parties / Need superset of cookie consent
2022-12-31 17:07 Chris Graham Assigned To Chris Graham =>
2022-12-31 17:07 Chris Graham Status Assigned => Not Assigned
2023-01-29 01:35 Guest Note Added: 0007887
2024-03-26 00:58 PDStig Tag Renamed Roadmap: v12 partial implementation => Roadmap: Over the horizon (partial implementation)