Chrome, Safari, and Edge to Prevent Disabling of Click Tracking Privacy Risk
bleepingcomputer.com
bleepingcomputer.com
In the same vein, with Chromium-based browsers, web sites have priority in deciding whether a connection can be made for pre-fetching purpose, even when the user explicitly disable pre-fetching in browser settings.[1]
Firefox properly respects the disabling of pre-fetching.[2]
* * *
[1] https://bugs.chromium.org/p/chromium/issues/detail?id=785125
[2] https://bugs.chromium.org/p/chromium/issues/detail?id=785125...
Firefox with extensions is the solution we should evangelize as some browsers become hostile to user privacy or just change things and pretend it’s not a big deal (cough Chrome cough).
So why make the UX worse for a callback function when the site can do it no matter what?
The only argument I can think of is that if the callback is slower, then sites may decide they don’t want the data because it slows down a user leaving their site by maybe a few hundred milliseconds.
Is that really the mentality of a site which is going to track you without permission? And if they have your permission, we should provide the JavaScript tools to make it fast.
First, hyperlink auditing works without Javascript enabled. Even if most users will have Javascript enabled, some won't. This moves auditing from "a thing that you could disable if you were willing to block JS" to "a thing that's always on no matter what."
Secondly, to quote Chrome's dev team, you want developers to fall into a "pit of success."
The ping link is so easy to use that it's something a developer can add without thinking. This encourages its inclusion in copy-paste code/tutorials. You're right that a site that wants to make use of something like this is probably not thrown off just because they need to add a click handler. But for someone who's newer to web development, it might make a difference.
Developer friction can add up -- if tracking is universally more complicated than writing normal code, more developers will do the "right" thing purely by virtue of laziness.
Finally, and most controversially, there is a line of thought that says that end user experience ought to be better on sites that are doing the right thing. You're right that a site that wants to track users is not going to be deterred by a hundred millisecond delay. But users might notice.
If performance on "good" and "bad" sites are the same, the theory is that companies that respect users are at a strict disadvantage to companies that take advantage of them. Over time, users will migrate to the services that don't respect their privacy because of the extra resources being poured into those sites.
Again, not everyone agrees with this -- but the idea is that if you're building an ethical site, you should have at least a few competitive advantages build in that might influence users to stick with you -- for instance, a snappier site.
> Developer friction can add up -- if tracking is universally more complicated than writing normal code, more developers will do the "right" thing purely by virtue of laziness.
Developers don't add ping attributes because it's easy. They add them because they're required to for analytics reasons. They will do this no matter what, so what we want to optimize for here is the user experience.
You say that users will naturally migrate to sites that don't have the bad UX inherent in javascript-based or redirect-based link tracking, but experience shows that's not true. Some of the most popular sites on the planet do this and users haven't been driven away.
> If you're willing to block JS, you can also trivially run an extension that strips all `ping` attributes.
Sure. Ublock Origin already does this today at the request level, so you don't even need to worry about pages re-adding the attributes. But we could just as easily use this argument to get rid of every privacy-protecting decision in the browser. Why should Firefox care about Canvas fingerprinting if an extension can block it instead?
For better or worse (some would argue worse) browsers have been slowly pulling privacy/tracking improvements from extensions into their core. I don't think they're close enough to a full solution that anyone should skip extensions like Ublock Origin or UMatrix, but I don't fault them for trying.
> Developers don't add ping attributes because it's easy.
Like you correctly mentioned above, ping attributes are trivial to block. If a developer is being forced to implement tracking, even with ping attributes available more broadly, they're still gonna use an additional method that gets through the most widely used ad blockers on the market -- and that means Javascript click events. Force-enabling the ping attribute will not change a single thing about that developer's approach.
The only developers who are going to be influenced by this change are hobbyists and engineers for small-time businesses that don't already have a massive analytics concern. I think it's reasonable to focus on its impact to them.
> You say that users will naturally migrate to sites that don't have the bad UX... but experience shows that's not true.
Don't be too pessimistic, loading speed is one of the primary reasons why the average person installs an adblocker to begin with. It is very hard to get people to care about privacy, but lots of people are still installing ad blockers purely because they improve the UX experience. That's a success story.
Of course, 100 milliseconds on its own is not going to make someone abandon a site. But when you make a lot of tiny compromises, they add up to big ones. And as of 2018, Google is still publishing statistics that say a 3 second load time will lose you 53% of your potential visitors.[0]
I know it seems like users don't care about this, but there's a nontrivial amount of data that suggests they do.
[0]: https://www.thinkwithgoogle.com/marketing-resources/data-mea...
I view browsers supporting ping as absolutely a privacy-protecting measure. As long as the browser can be relied-upon to support it, developers will use it instead of more invasive techniques, which means not only is it a better UX for the users, but the amount of information collected by each ping is a known quantity, and browsers can also do things like defer executing ping requests for battery reasons or to reduce the amount of timing information given to the recipient.
I would have no objection to browsers disabling pings if JavaScript is also disabled at the browser level, but that's a fairly niche edge case and I don't have any strong opinions there (and of course even with JS disabled a site could still serve up a static page where all outbound links go through a redirect domain anyway; supporting pings by default even with JS disabled encourages developers to just always use it, and then the people who really care can run an extension to disable it).
> Like you correctly mentioned above, ping attributes are trivial to block. If a developer is being forced to implement tracking, even with ping attributes available more broadly, they're still gonna use an additional method that gets through the most widely used ad blockers on the market -- and that means Javascript click events. Force-enabling the ping attribute will not change a single thing about that developer's approach.
The more privacy-protecting measures browsers have by default, the less aggressive people will be about using third-party extensions to do the same thing. And given what I said above, it might be a good idea fo adblockers to allow pings by default and only disable them upon request. As you said, if ping isn't reliable developers will use something else, so the goal here is make ping reliable. If it's reliable, people will use it, and using ping is far better than the other techniques available.
> Don't be too pessimistic, loading speed is one of the primary reasons why the average person installs an adblocker to begin with. It is very hard to get people to care about privacy, but lots of people are still installing ad blockers purely because they improve the UX experience. That's a success story.
We're talking about delays clicking on outbound links though. If a big site adds 100ms to the loading time of outbound links, most users are going to blame the external site for that because they don't understand that the delay is being added before the request is made. This means that big sites can add outbound link tracking with very little penalty, and in fact the additional delay, if anything, is going to encourage users to stay on the site instead of visiting external sites.
> Of all the browsers I tested, only Brave and Firefox currently disable it by default and do not appear to have any plans on enabling it in the future.
Oh, that's why.
But if popular websites are using <a ping> for other browsers, then perhaps Firefox should re-enable support to avoid the performance overhead of link redirects.
Selling privacy is not as easy as to sell speed but if we start installing Firefox again it can gain back some of its former share.
This move is very counter to Apple’s privacy stance.
1: https://developer.mozilla.org/en-US/docs/Web/API/MutationObs...
Apple are in a firm position unlike anyone in the industry to not suffer losses by taking a strong stance on privacy, and that's why its believable... but that doesn't make it true?
I saw another variation of this the other day [1] where an advertisement would spoof the href so that the "hover preview" was misleading, and an onMouseOver event handler would swap the href before you click it.
That is much more noticeable than sending a link that shows www.google.com but instead goes somewhere else on click.
<style>
a:active { background-image: url(tracking...); }
</style>It's still worth noting though that in either case this is a way more complicated attack than adding a ping attribute.
With the ping attribute, you don't have to worry about browser caching because you're using a post request. If you want to get rid of caching with the CSS method, you either need to switch to serverside rendering (which blocks you from using static hosts like Github pages) or have Javascript enabled so you can generate the CSS on the fly.
You also need to worry about false positives and false negatives -- a user clicking on a link and then dragging off of it without visiting will still trigger your tracking code, and a user navigating via keyboard controls won't trigger this at all.
None of that is to say that CSS tracking isn't something we should worry about (for instance, I really wish Firefox disabled `visited` styling by default), but I don't think this is an effective argument for saying that we should just give up and make tracking even easier (not that parent is claiming this).
And in any case, it's also not like it would be exactly hard for a future version of Firefox to add an option that disabled `active` styling specifically for link tags. Tracking protection is a game of cat and mouse. We patch things as we go.
I have, and it does.
Or serve Cache-Control: no-cache?
If you're serving your background image from a server that lets you set headers (which you would want to since it's a tracking beacon) then using headers makes this a lot easier.
It is being …. This is not a new practice; the only thing new about it is that you can no longer disable it. (Even before, on Safari at least, I'm pretty sure it was opt out rather than opt in.)
every single ad tech bro
With both Bing and Google still existing I don’t see why Mozilla wouldn’t continue being able to negotiate a good sized contract from one or the other for default search placements.
(It's becoming a nice excuse to clamp down on configurability, without considering if the APIs really should be available to authors.)
* There's now a spec/standard for the data exchange.
* Users get faster websites, can see the actual destination URL on hover, and maybe a slight security improvement in the event that the server component performing the tracking redirects is compromised.
* It's easier to find the ping attributes on links than untangle all the JS on a page.
* For extension developers this actually increases privacy (assuming it's adopted en mass) because now you can just remove all the ping attributes on links rather than unbind click handlers which might end up breaking the page.
With this feature, the browser could immediately navigate to the link target and simultaneously make the ping request in the background.
It also says the end user can disable it. Guess that bit is being dropped?:
"The ping attribute is redundant with pre-existing technologies like HTTP redirects and JavaScript in allowing Web pages to track which off-site links are most popular or allowing advertisers to track click-through rates.
However, the ping attribute provides these advantages to the user over those alternatives:
It allows the user to see the final target URL unobscured. It allows the UA to inform the user about the out-of-band notifications. It allows the user to disable the notifications without losing the underlying link functionality. It allows the UA to optimize the use of available network bandwidth so that the target page loads faster.
Thus, while it is possible to track users without this feature, authors are encouraged to use the ping attribute so that the user agent can make the user experience more transparent."
https://html.spec.whatwg.org/multipage/links.html#hyperlink-...
It will be available on the Chrome Web Store once the listing is reviewed: https://chrome.google.com/webstore/detail/jkpocifanmihboebfh...
The extension is not needed if you already use uBlock Origin, because the latter disables hyperlink auditing by default.
With "standards" like these, it does not sound like end users are involved in the "standards-making" process.
Maybe users need their own set of "standards" and browser authors can decide whether or not they want to implement them.
For example, one (implemented) standard might be the ability to disable automatic loading of images.
Another standard might be the option to disable CSS.
Another might be the ability to disable DNS prefetch.
And so on.
This feature was specced, because sites use JS and HTTP redirects to do click tracking anyway. HTTP-based tracking (like t.co) can't even be bypassed.
With or without ping you get the exact same amount of tracking, but with ping at least the tracking can be made more transparent, lower priority and not delaying the navigation.
The problem is that as long as ping is less reliable than JS and HTTP, sites will continue to use JS and HTTP. You don't get less tracking, you only get less performant tracking.
(Disclaimer: I use one, and it works very well at filtering stuff out before it even gets to the browser.)
I’ve switched to Firefox but somethings are blockers for me. Webpack hot reloading doesn’t work :(
Other than that, it’s a very solid browser. The only way someone’s gonna win against chrome is by keeping the user first.
Super sad to see Apple privacy double speak when Safari isn’t even walking the talk.
Better is design (anything!) by UNIX philosophy, which is: you have enough ropes to hang yourself, and also a few more just in case.
It makes the first week or so of web browsing a little mechanical, having to manually whitelist. But it's worth it. The Web is so performant with JavaScript disabled.
... and then you have Javascript at the edge (e.g. Cloud flare workers, etc).
The act of circumventing tracking can ironically make you more identifiable. How many users toggle Do Not Track, how many disable Javascript and share the same user agent and ip block...
Until there are strong privacy defaults used by the masses, one has to go through ridiculous lengths to get anything more than the illusion of privacy.