Regarding the list of devices, it should be noted those IDs are site-specific, so they can't really be used for cross-site tracking, and clearing cookies also resets them (at least in Firefox). But there are discussions pointing to a consensus around disabling the enumeration before permission is granted. As in other cases, the browsers will probably have to lie to avoid breaking sites.
This is the real hole, imo. 99% of web pages should not need that kind of information. I’m close to thinking 100% shouldn’t, although I understand its need in particularly advanced applications. Maybe there should be a sandbox specifically for these very advanced JavaScript apps - nothing else should be allowed to get font metrics.
I'm just saying that simply blocking or limiting that part of the DOM API is probably not a practical solution.
From an anti-fingerprinting perspective you do much better to restrict what system fonts are available than to remove all of these valuable and common reactive features.
Unless that dependency is specified in a style sheet language, yes. I think that’s exactly how it should be: the web of 'apps' is fine to break this if it wants, the web of 'content' shouldn’t be concerned with extremely detailed matters of presentation.
> From an anti-fingerprinting perspective you do much better to restrict what system fonts are available
Agreed; I’m not saying there isn’t lower hanging fruit, I’m just commenting on the one that interested me.
+ A new set of optional HTTP headers
+ A new JS API
Note: This only matters for bots that serve to aid your website. Like search engine crawlers being given instructions what pages to ignore.
* Chrome on iOS started sending "webp" on it's Accept header when it didn't support inline webp yet.
* Firefox would take CSPs applied to same-origin IFrames and additionally apply them to the parent document.
* Edge wouldn't accept data URLs for IFrames that were more than 4096 characters.
In all of these cases the bug was eventually fixed, but we needed to work around the bug in the meantime. UA parsing to say "if it's Edge < v76" or whatever was the best way to do this.
chargingTime : Infinity level : 0.77
Yes that is indeed my phone's current battery level. And no matter if incognito Brave, Firefox Focus or Chrome browsers, I am unique to the site.
Even Firefox Focus which is meant to be good for privacy by throwing the entire session each time is leaky as eg with the audio context.
The problem is that shitheads exploit every possibility to reduce the utility of society in favour of their own profit.
This is why we can't have nice things; as the aphorism goes.
Maybe programmers and designers should start thinking the other way around: what could be pretty clever that could be used for a feature but that CANNOT be misused for tracking
That sounds like a client concern, not a server concern.
I mean, as a consumer of web content I do not want my power saving profile to be accessible or actively influenced by a third party.
Having said that, I do get that battery level has some potential as part of a very short-lived fingerprint, and I really don't see the need to expose this information to remote sites.
Anyway, if the site had to ask for the fonts, it would be viable for the browsers to impose some sane limitations on their API.
As soon as you introduce a programming environment you introduce the ability to do all sorts of things that aren't builtin.
It's generally not the browser saying, here's the list of my settings, you asked for, but rather a program being executed that pokes around at all the things it can interact with to squeeze out info.
But I agree, that javascript should not have access to audio device models numbers with or without permission, nor should it have any kind of access to the browsers chrome.