How to Quash Firefox's Silent Requests
An anonymous reader writes: Unlike older versions of Firefox, more recent versions will make a request to a destination server just by hovering over a link. No CSS, no JavaScript, no prefetch required. Try it for yourself. Disable CSS and JavaScript and fire up iftop or Windows Resource Monitor, hover over some links and watch the fun begin. There once was a time when you hovered over a link to check the 'real link' before you clicked on it. Well no more. Just looking at it makes a 'silent request.' This behavior is the result of the Mozilla speculative connect API . Here is a bug referencing the API when hovering over a thumbnail on the new tab page. And another bug requesting there be an option to turn it off. Strangely enough the latter bug is still labeled WONTFIX even though the solution is in the comments (setting network.http.speculative-parallel-limit to 0).
Firefox's own How to stop Firefox from making automatic connections also mentions setting network.http.speculative-parallel-limit to 0 to to stop predictive connections when a user "hovers their mouse over thumbnails on the New Tab Page or the user starts to search in the Search Bar" but no mention regarding hovering over a normal link. Good thing setting network.http.speculative-parallel-limit to 0 does appear to disable speculative connect on normal links too. One can expect Firefox to make requests in the background to its own servers for things such as checking for updates to plugins etc. But silently making requests to random links on a page (and connecting to those servers) simply by hovering over them is something very different.
Firefox's own How to stop Firefox from making automatic connections also mentions setting network.http.speculative-parallel-limit to 0 to to stop predictive connections when a user "hovers their mouse over thumbnails on the New Tab Page or the user starts to search in the Search Bar" but no mention regarding hovering over a normal link. Good thing setting network.http.speculative-parallel-limit to 0 does appear to disable speculative connect on normal links too. One can expect Firefox to make requests in the background to its own servers for things such as checking for updates to plugins etc. But silently making requests to random links on a page (and connecting to those servers) simply by hovering over them is something very different.
And for anyone new to Firefox, to set that variable:
1. Type "about:config" into the address bar (and you'll see a list of variables)
2. Copy'n'paste "network.http.speculative-parallel-limit" into the search bar at the top of that page and hit Return
3. You'll now just have that one line on the page. Double-click it (or right click on it and select "Modify")
4. A box pops up, you change the value to 0, and hit OK.
Done.
(The first time you look at "about:config", Firefox might ask you "Are you sure you know what you're doing?" Obviously you say yes to this.)
(Yes I know I've explained it as if talking to a ten year old, but protecting your privacy is important so it's important that absolutely everyone can do it.)
Help build the anti-software-patent wiki
Looking at the bug request that was linked in the summary, it appears that "more recent versions" of Firefox means "all versions since 2012".
You think this'll change back when Firefox updates?
I've always had good luck with explicitly set variables being carried forward successfully.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
According to the docs, this doesn't fire on just any random website's links, only in specific parts of the Firefox UI:
To improve the loading speed, Firefox will open predictive connections to sites when the user hovers their mouse over thumbnails on the New Tab Page or the user starts to search in the Search Bar, or in the search field on the Home or the New Tab Page. In case the user follows through with the action, the page can begin loading faster since some of the work was already started in advance.
That's fortunate, because firing it on any website's hover link would reach that nightmare scenario pretty quickly.
Link prefetcing on websites only happens if the site explicitly marks the link for prefetch. (Example use case: prefetch page 2 of an article from page 1.) Firefox & Chrome have done this for years.
I don't understand the concern, at least if I'm reading the documentation for the speculative connect API correctly (first link in blurb).
All this seems to do is make the TCP connection (whether SSL or not) in anticipation of a link being clicked. The speculative connect API does not send any data in the TCP pipe it is creating. By opening the TCP link early, once the link is clicked, the TCP connection is probably ready to go, cutting down a bit on setup delay (which can sometimes be substantial if DNS is slow to resolve or the connection is using SSL), thus making the click seem more responsive to the user.
But nowhere in the docs is any mention of actual requests made to the server or any data downloaded from the server... until you click the link. Thus, the only information leaked by hovering over a link but not clicking on it is your externally-known IP address, which may show up in the error logs of the webserver as a dropped connection. There seems to be no danger of accidentally downloading a virus simply by hovering over a click.
If I'm missing something, please let me know.
And looking closer at the API description, speculative connect isn't supposed to actually make the HTTP request, just set up the TCP connection. No headers, no URL, just an IP address at the network layer.
Still technically a connection, but hardly any information is sent, and it's not mistakable for an actual click.
Yeah that's a pain, fix it by flipping "browser.urlbar.formatting.enabled" to false.
Most likely not. But you can create a file called user.js in your Firefox profile folder with the line
user_pref("network.http.speculative-parallel-limit", 0); // no connections on link hover
IMO keeping your GUI-less settings in this file is the easiest way to manage them and remember what you've changed. Be aware though that support for it might be removed one day: https://bugzilla.mozilla.org/show_bug.cgi?id=672630