Giter Site home page Giter Site logo

user.js's Introduction

user.js

Firefox configuration hardening

A user.js configuration file for Mozilla Firefox designed to harden browser settings and make it more secure.

This is a default template with every possible hardening measure enforced. See the relaxed branch for a variant providing more usability

Build Status

Main goals

  • Limit the possibilities to track the user through web analytics.
  • Harden the browser against known data disclosure or code execution vulnerabilities.
  • Limit the browser from storing anything even remotely sensitive persistently.
  • Make sure the browser doesn't reveal too much information to shoulder surfers.
  • Harden the browser's encryption (cipher suites, protocols).
  • Limit possibilities to uniquely identify the browser/device using browser fingerprinting.
  • Hopefully limit the attack surface by disabling various features.
  • Still be usable in daily use.

How to achieve this?

There are several parts to all this and they are:



Download

Different download methods are available:

  • Clone using git: git clone https://github.com/pyllyukko/user.js
  • Download and extract the ZIP file containing the latest version.
  • Download the latest user.js directly

Installation

Backups

Do note that these settings alter your browser behaviour quite a bit, so it is recommended to either create a completely new profile for Firefox or backup your existing profile directory before putting the user.js file in place.

To enable the Profile Manager, run Firefox with command-line arguments: firefox --no-remote -P

Single profile installation

Copy user.js in your current user profile directory, or (recommended) to a fresh, newly created Firefox profile directory.

The file should be located at:

OS Path
Windows 7 %APPDATA%\Mozilla\Firefox\Profiles\XXXXXXXX.your_profile_name\user.js
Linux ~/.mozilla/firefox/XXXXXXXX.your_profile_name/user.js
OS X ~/Library/Application Support/Firefox/Profiles/XXXXXXXX.your_profile_name
Android /data/data/org.mozilla.firefox/files/mozilla/XXXXXXXX.your_profile_name and see issue #14
Sailfish OS + Alien Dalvik /opt/alien/data/data/org.mozilla.firefox/files/mozilla/XXXXXXXX.your_profile_name
Windows (portable) [firefox directory]\Data\profile\

With this installation method, if you change any of user.js settings through about:config or Firefox preferences dialogs, they will be reset to the user.js defined values after you restart Firefox. This makes sure they're always back to secure defaults when starting the browser. However this prevents persistently changing settings you don't consider appropriate. Either edit user.js directly, or use the system-wide installation method described below.

System-wide installation (all platforms)

Generate a file suitable for system-wide installation, by running make with one of the following targets:

  • systemwide_user.js: (the value will be used as default value for all Firefox Profiles where it is not explicitly set, it can be changed in about:config and is kept across browser sessions)
  • locked_user.js: (the value will be used as default value on Firefox profile creation, will be locked and can't be changed) in user.js or in Firefox's about:config or settings.
  • debian_locked.js: Debian specific. Users are not able to override preferences. See #415.

Copy the produced file to the Firefox installation directory. The file should be located at:

OS Path
Windows C:\Program Files (x86)\Mozilla Firefox\mozilla.cfg
Linux /etc/firefox/syspref.js, for older versions: /etc/firefox/firefox.js
Linux (Debian) /etc/firefox-esr/firefox-esr.js
Linux (Gentoo, Archlinux) /usr/lib/firefox/mozilla.cfg, might also be /usr/lib32/ or /usr/lib64/
OS X /Applications/Firefox.app/Contents/Resources/mozilla.cfg

Additional installation steps for Windows / OS X / Gentoo / Archlinux

Create local-settings.js in Firefox installation directory, with the following contents:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");

This file should be located at:

OS Path
Windows C:\Program Files (x86)\Mozilla Firefox\defaults\pref\
OS X /Applications/Firefox.app/Contents/Resources/defaults/pref
Linux (Gentoo, Archlinux) /usr/lib/firefox/defaults/pref/, might also be /usr/lib32/ or /usr/lib64/

If mozilla.cfg still fails to load, you must add a blank comment to the top of mozilla.cfg like so:

//

Additional settings (policies)

Not all Firefox settings can be changed through user.js - some must be set in a separate policies.json file [1]. These policies apply system-wide.

To install policies.json from this repository, simply copy it to the appropriate directory (create it if it does not exist):

OS Path
Windows C:\Program Files (x86)\Mozilla Firefox\distribution\
OS X /Applications/Firefox.app/distribution\
Linux (Debian) /etc/firefox-esr/policies/

Note that JSON does not support comments, hence settings are documented in custom *_comment keys. Mozilla maintains a list of available policies: [1] [2](https://github.com/mozilla/policy-templates). The Enterprise Policy Generator add-on can be used to generate policies.json files from a graphical interface.

Updating using git

For any of the above methods, you can keep your browser's user.js with the latest version available here: Clone the repository, and create a symbolic link from the appropriate location to the user.js file in the repository. Just run git pull in the repository when you want to update, then restart Firefox:

cd ~/.mozilla/firefox
git clone 'https://github.com/pyllyukko/user.js.git'
cd XXXXXXXX.your_profile_name
ln -s ../user.js/user.js user.js

Verifying

Verify that the settings are effective from about:support (check the "Important Modified Preferences" and "user.js Preferences" sections).

Verify that policies are effective from about:policies.


What does it do?

There's a whole lot of settings that this modifies and they are divided in the following sections.

Some of the settings in this user.js file might seem redundant, as some of them are already set to the same values by default. We chose to explicitely set their values, which ensures these settings are enforced if a future Firefox update changes the default value.

HTML5 / APIs / DOM

HTML5 / APIs / DOM related settings. Mozilla is keen to implement every new HTML5 feature, which have had unforeseen security or privacy implications. This section disables many of those new and yet to be proven technologies.

  • Disable Service Workers [ 1 2 3 ]
  • Disable web notifications [ 1 ]
  • Disable DOM timing API [ 1 2 ]
  • Disable resource timing API [ 1 ]
  • Make sure the User Timing API does not provide a new high resolution timestamp [ 1 2 ]
  • Disable Web Audio API [ 1 ]
  • Disable Location-Aware Browsing (geolocation) [ 1 ]
  • When geolocation is enabled, use Mozilla geolocation service instead of Google [ 1 ]
  • When geolocation is enabled, don't log geolocation requests to the console
  • Disable raw TCP socket support (mozTCPSocket) [ 1 2 3 ]
  • Disable leaking network/browser connection information via Javascript
  • Disable network API (Firefox < 32) [ 1 2 ]
  • Disable WebRTC entirely to prevent leaking internal IP addresses (Firefox < 42)
  • Don't reveal your internal IP when WebRTC is enabled (Firefox >= 42) [ 1 2 ]
  • Disable WebRTC getUserMedia, screen sharing, audio capture, video capture [ 1 2 3 ]
  • Disable battery API (Firefox < 52) [ 1 2 ]
  • Disable telephony API [ 1 ]
  • Disable "beacon" asynchronous HTTP transfers (used for analytics) [ 1 ]
  • Disable clipboard event detection (onCut/onCopy/onPaste) via Javascript [ 1 2 ]
  • Disable "copy to clipboard" functionality via Javascript (Firefox >= 41) [ 1 2 ]
  • Disable speech recognition [ 1 2 3 ]
  • Disable speech synthesis [ 1 ]
  • Disable sensor API [ 1 ]
  • Disable pinging URIs specified in HTML ping= attributes [ 1 ]
  • When browser pings are enabled, only allow pinging the same host as the origin page [ 1 ]
  • Disable gamepad API to prevent USB device enumeration [ 1 2 ]
  • Disable virtual reality devices APIs [ 1 2 ]
  • Disable vibrator API
  • Disable Archive API (Firefox < 54) [ 1 2 ]
  • Disable webGL [ 1 2 ]
  • When webGL is enabled, use the minimum capability mode
  • When webGL is enabled, disable webGL extensions [ 1 ]
  • When webGL is enabled, force enabling it even when layer acceleration is not supported [ 1 ]
  • When webGL is enabled, do not expose information about the graphics driver [ 1 2 ]
  • Spoof dual-core CPU [ 1 2 ]
  • Disable WebAssembly [ 1 2 3 ]

Misc

Settings that do not belong to other sections or are user specific preferences.

  • Disable face detection
  • Disable GeoIP lookup on your address to set default search engine region [ 1 2 ]
  • Set Accept-Language HTTP header to en-US regardless of Firefox localization [ 1 ]
  • Don't use OS values to determine locale, force using Firefox locale setting [ 1 ]
  • Don't use Mozilla-provided location-specific search engines
  • Do not automatically send selection to clipboard on some Linux platforms [ 1 ]
  • Prevent leaking application locale/date format using JavaScript [ 1 2 ]
  • Do not submit invalid URIs entered in the address bar to the default search engine [ 1 ]
  • Don't trim HTTP off of URLs in the address bar. [ 1 ]
  • Disable preloading of autocomplete URLs. [ 1 ]
  • Don't try to guess domain names when entering an invalid domain name in URL bar [ 1 ]
  • When browser.fixup.alternate.enabled is enabled, strip password from 'user:password@...' URLs [ 1 ]
  • Send DNS request through SOCKS when SOCKS proxying is in use [ 1 ]
  • Don't monitor OS online/offline connection state [ 1 ]
  • Enforce Mixed Active Content Blocking [ 1 2 3 ]
  • Enforce Mixed Passive Content blocking (a.k.a. Mixed Display Content)
  • Disable JAR from opening Unsafe File Types [ 1 ]
  • Set File URI Origin Policy [ 1 ]
  • Disable Displaying Javascript in History URLs [ 1 ]
  • Disable asm.js [ 1 2 3 4 ]
  • Disable SVG in OpenType fonts [ 1 2 ]
  • Disable video stats to reduce fingerprinting threat [ 1 2 3 ]
  • Don't reveal build ID
  • Don't use document specified fonts to prevent installed font enumeration (fingerprinting) [ 1 2 3 ]
  • Enable only whitelisted URL protocol handlers [ 1 2 3 4 5 6 ]

Extensions / plugins

Harden preferences related to external plugins

  • Ensure you have a security delay when installing add-ons (milliseconds) [ 1 2 ]
  • Require signatures [ 1 ]
  • Opt-out of add-on metadata updates [ 1 ]
  • Opt-out of themes (Persona) updates [ 1 ]
  • Disable Flash Player NPAPI plugin [ 1 ]
  • Disable Java NPAPI plugin
  • Disable sending Flash Player crash reports
  • When Flash crash reports are enabled, don't send the visited URL in the crash report
  • When Flash is enabled, download and use Mozilla SWF URIs blocklist [ 1 2 ]
  • Disable Gnome Shell Integration NPAPI plugin
  • Enable plugins click-to-play [ 1 2 ]
  • Updates addons automatically [ 1 ]
  • Enable add-on and certificate blocklists (OneCRL) from Mozilla [ 1 2 3 4 5 ]
  • Decrease system information leakage to Mozilla blocklist update servers [ 1 ]
  • Disable system add-on updates (hidden & always-enabled add-ons from Mozilla) [ 1 2 3 4 ]

Firefox (anti-)features / components

Disable Firefox integrated metrics/reporting/experiments, disable potentially insecure/invasive/undesirable features

  • Disable Extension recommendations (Firefox >= 65) [ 1 ]
  • Disable WebIDE [ 1 2 ]
  • Disable remote debugging [ 1 2 ]
  • Disable Mozilla telemetry/experiments [ 1 2 3 4 5 6 7 8 9 10 ]
  • Disallow Necko to do A/B testing [ 1 ]
  • Disable sending Firefox crash reports to Mozilla servers [ 1 2 3 4 ]
  • Disable sending reports of tab crashes to Mozilla (about:tabcrashed), don't nag user about unsent crash reports [ 1 ]
  • Disable FlyWeb (discovery of LAN/proximity IoT devices that expose a Web interface) [ 1 2 3 4 ]
  • Disable the UITour backend [ 1 ]
  • Enable Firefox Tracking Protection [ 1 2 3 4 5 ]
  • Enable contextual identity Containers feature (Firefox >= 52)
  • Enable Firefox's anti-fingerprinting mode ("resist fingerprinting" or RFP) (Tor Uplift project) [ 1 2 3 ]
  • disable mozAddonManager Web API [FF57+] [ 1 2 3 4 5 ]
  • disable showing about:blank/maximized window as soon as possible during startup [FF60+] [ 1 ]
  • Disable the built-in PDF viewer [ 1 2 3 ]
  • Disable collection/sending of the health report (healthreport.sqlite*) [ 1 2 ]
  • Disable Shield/Heartbeat/Normandy (Mozilla user rating telemetry) [ 1 2 3 4 5 6 7 8 ]
  • Disable Firefox Hello metrics collection [ 1 ]
  • Enforce checking for Firefox updates [ 1 ]
  • Enable blocking reported web forgeries [ 1 2 3 4 ]
  • Enable blocking reported attack sites [ 1 ]
  • Disable querying Google Application Reputation database for downloaded binary files [ 1 2 ]
  • Disable Pocket [ 1 2 ]
  • Disable "Recommended by Pocket" in Firefox Quantum

Automatic connections

Prevents the browser from auto-connecting to some Mozilla services, and from predictively opening connections to websites during browsing.

  • Disable prefetching of URLs [ 1 2 ]
  • Disable DNS prefetching [ 1 2 ]
  • Disable the predictive service (Necko) [ 1 ]
  • Reject .onion hostnames before passing the to DNS [ 1 ]
  • Disable search suggestions in the search bar [ 1 ]
  • Disable "Show search suggestions in location bar results"
  • When using the location bar, don't suggest URLs from browsing history
  • Disable Firefox Suggest [ 1 2 ]
  • Disable SSDP [ 1 ]
  • Disable automatic downloading of OpenH264 codec [ 1 2 ]
  • Disable speculative pre-connections [ 1 2 ]
  • Disable downloading homepage snippets/messages from Mozilla [ 1 2 ]
  • Never check updates for search engines [ 1 ]
  • Disable automatic captive portal detection (Firefox >= 52.0) [ 1 ]
  • Disable (parts of?) "TopSites"

HTTP

HTTP protocol related entries. This affects cookies, the user agent, referer and others.

  • Disallow NTLMv1 [ 1 ]
  • Enable CSP 1.1 script-nonce directive support [ 1 ]
  • Enable Content Security Policy (CSP) [ 1 2 ]
  • Enable Subresource Integrity [ 1 2 ]
  • Don't send referer headers when following links across different domains [ 1 2 3 4 ]
  • Trim HTTP referer headers to only send the scheme, host, and port [ 1 ]
  • When sending Referer across domains, only send scheme, host, and port in the Referer header [ 1 ]
  • Accept Only 1st Party Cookies [ 1 ]
  • Enable first-party isolation [ 1 2 3 ]
  • Make sure that third-party cookies (if enabled) never persist beyond the session. [ 1 2 3 ]

Caching

Enable and configure private browsing mode, don't store information locally during the browsing session

  • Permanently enable private browsing mode [ 1 2 ]
  • Do not download URLs for the offline cache [ 1 ]
  • Clear history when Firefox closes [ 1 ]
  • Set time range to "Everything" as default in "Clear Recent History"
  • Clear everything but "Site Preferences" in "Clear Recent History"
  • Don't remember browsing history
  • Don't remember recently closed tabs
  • Disable disk cache [ 1 ]
  • Disable Caching of SSL Pages
  • Disable download history
  • Disable password manager (use an external password manager!)
  • Disable form autofill, don't save information entered in web page forms and the Search Bar
  • Cookies expires at the end of the session (when the browser closes) [ 1 ]
  • Require manual intervention to autofill known username/passwords sign-in forms [ 1 2 ]
  • Disable formless login capture [ 1 ]
  • When username/password autofill is enabled, still disable it on non-HTTPS sites [ 1 ]
  • Show in-content login form warning UI for insecure login fields [ 1 ]
  • Delete Search and Form History
  • Clear SSL Form Session Data [ 1 ]
  • Delete temporary files on exit [ 1 ]
  • Do not create screenshots of visited pages (relates to the "new tab page" feature) [ 1 2 ]
  • Don't fetch and permanently store favicons for Windows .URL shortcuts created by drag and drop
  • Disable bookmarks backups (default: 15) [ 1 ]
  • Disable downloading of favicons in response to favicon fingerprinting techniques [ 1 2 3 ]

UI related

Improve visibility of security-related elements, mitigate shoulder-surfing

  • Enable insecure password warnings (login forms in non-HTTPS pages) [ 1 2 3 ]
  • Disable "Are you sure you want to leave this page?" popups on page close [ 1 ]
  • Disable Downloading on Desktop
  • Always ask the user where to download [ 1 ]
  • Disable the "new tab page" feature and show a blank tab instead [ 1 2 ]
  • Disable Snippets [ 1 2 ]
  • Disable Activity Stream [ 1 ]
  • Disable new tab tile ads & preload [ 1 2 3 4 5 ]
  • Disable Mozilla VPN ads on the about:protections page [ 1 2 3 4 ]
  • Enable Auto Notification of Outdated Plugins (Firefox < 50) [ 1 ]
  • Force Punycode for Internationalized Domain Names [ 1 2 3 4 5 ]
  • Disable inline autocomplete in URL bar [ 1 ]
  • Disable CSS :visited selectors [ 1 2 ]
  • Disable URL bar autocomplete and history/bookmarks suggestions dropdown [ 1 ]
  • Do not check if Firefox is the default browser
  • When password manager is enabled, lock the password storage periodically
  • Lock the password storage every 1 minutes (default: 30)
  • Display a notification bar when websites offer data for offline use [ 1 ]

Cryptography

TLS protocol related settings

  • Enable HTTPS-Only Mode [ 1 2 ]
  • Enable HSTS preload list (pre-set HSTS sites list provided by Mozilla) [ 1 2 3 ]
  • Enable Online Certificate Status Protocol [ 1 2 3 4 5 6 7 8 ]
  • Enable OCSP Stapling support [ 1 2 3 ]
  • Enable OCSP Must-Staple support (Firefox >= 45) [ 1 2 3 ]
  • Require a valid OCSP response for OCSP enabled certificates [ 1 ]
  • Disable TLS Session Tickets [ 1 2 3 4 5 ]
  • Only allow TLS 1.[2-3] [ 1 ]
  • Disable insecure TLS version fallback [ 1 2 ]
  • Enforce Public Key Pinning [ 1 2 ]
  • Disallow SHA-1 [ 1 2 ]
  • Warn the user when server doesn't support RFC 5746 ("safe" renegotiation) [ 1 2 ]
  • Disable automatic reporting of TLS connection errors [ 1 ]
  • Pre-populate the current URL but do not pre-fetch the certificate in the "Add Security Exception" dialog [ 1 2 ]
  • Encrypted SNI (when TRR is enabled) [ 1 2 3 ]

Cipher suites

This section tweaks the cipher suites used by Firefox. The idea is to support only the strongest ones with emphasis on forward secrecy, but without compromising compatibility with all those sites on the internet. As new crypto related flaws are discovered quite often, the cipher suites can be tweaked to mitigate these newly discovered threats.

  • Disable null ciphers
  • Disable SEED cipher [ 1 ]
  • Disable 40/56/128-bit ciphers
  • Disable RC4 [ 1 2 3 4 ]
  • Disable 3DES (effective key size is < 128) [ 1 2 3 ]
  • Disable ciphers with ECDH (non-ephemeral)
  • Disable 256 bits ciphers without PFS
  • Enable GCM ciphers (TLSv1.2 only) [ 1 ]
  • Enable ChaCha20 and Poly1305 (Firefox >= 47) [ 1 2 3 4 5 ]
  • Disable ciphers susceptible to the logjam attack [ 1 ]
  • Disable ciphers with DSA (max 1024 bits)
  • Enable X25519Kyber768Draft00 (post-quantum key exchange) [FF Nightly 2024-01-18+] [ 1 2 3 ]

Further hardening

This is not enough! Here's some other tips how you can further harden Firefox:

  • By default your browser trusts 100's of Certificate Authorities (CAs) from various organizations to guarantee privacy of your encrypted communications with websites. Some CAs have been known for misusing or deliberately abusing this power in the past, and a single malicious CA can compromise all your encrypted communications! To workaround this you may want to inspect the list of trusted certificates. [1]
  • Keep your browser updated! If you check Firefox's security advisories, you'll see that pretty much every new version of Firefox contains some security updates. If you don't keep your browser updated, you've already lost the game.
  • Disable/uninstall all unnecessary extensions and plugins!
  • Use long and unique passwords/passphrases for each website/service.
  • Prefer open-source, reviewed and audited software and operating systems whenever possible.
  • Do not transmit information meant to be private over unencrypted communication channels.
  • Use a search engine that doesn't track its users, and set it as default search engine.
  • If a plugin is absolutely required, check for plugin updates
  • Create different profiles for different purposes
  • Change the Firefox's built-in tracking protection to use the strict list
  • Change the timezone for Firefox by using the TZ environment variable (see here) to reduce it's value in browser fingerprinting
  • If you are concerned about more advanced threats, use specialized hardened operating systems and browsers such as Tails or Tor Brower Bundle

Add-ons

Here is a list of the most essential security and privacy enhancing add-ons that you should consider using:

  • uBlock Origin
    • For additional protection, enable more blocklists in the addon dashboard.
    • For additional protection, set it to Hard mode (experienced users) - the default is Easy mode
  • HTTPS Everywhere
    • For additional protection, enable Block all unencrypted requests in the toolbar button menu. This will break websites where HTTPS is not available.
  • Cookie AutoDelete - when a tab closes, any cookies not being used are automatically deleted. Whitelist the ones you trust while deleting the rest.
  • NoScript
  • Decentraleyes

Additional add-ons that you might consider using or reading about:

Known problems and limitations

Hardening your often implies a trade-off with ease-of-use and comes with reduced functionality. Here is a list of known problems/limitations:

  • Disabling ServiceWorkers breaks functionality on some sites (Google Street View...)
  • Disabling ServiceWorkers breaks Firefox Sync
  • Disabling resource timing API breaks some DDoS protection pages (Cloudflare)
  • Web Audio API is required for Unity web player/games
  • Disabling WebRTC breaks peer-to-peer file sharing tools (reep.io ...)
  • Disabling clipboard events breaks Ctrl+C/X/V copy/cut/paste functionaility in JS-based web applications (Google Docs...)
  • Disabling clipboard operations will break legitimate JS-based "copy to clipboard" functionality
  • Disabling WebGL breaks WebGL-based websites/applications (windy, meteoblue...)
  • WebAssembly is required for Unity web player/games
  • Enabling Mixed Display Content blocking can prevent images/styles... from loading properly when connection to the website is only partially secured
  • Disabling nonessential protocols breaks all interaction with custom protocols such as mailto:, irc:, magnet: ... and breaks opening third-party mail/messaging/torrent/... clients when clicking on links with these protocols
  • Disabling system add-on updates prevents Mozilla from "hotfixing" your browser to patch critical problems (one possible use case from the documentation)
  • Containers are not available in Private Browsing mode
  • RFP breaks some keyboard shortcuts used in certain websites (see #443)
  • RFP changes your time zone
  • RFP breaks some DDoS protection pages (Cloudflare)
  • Fully automatic updates are disabled and left to package management systems on Linux. Windows users may want to change this setting.
  • Update check page might incorrectly report Firefox ESR as out-of-date
  • Do No Track must be enabled manually
  • Blocking referers across same eTLD sites breaks some login flows relying on them, consider lowering this pref to 1
  • Blocking 3rd-party cookies breaks a number of payment gateways
  • First-party isolation breaks Microsoft Teams
  • First-party isolation causes HTTP basic auth to ask for credentials for every new tab (see #425)
  • You can not view or inspect cookies when in private browsing: https://bugzilla.mozilla.org/show_bug.cgi?id=823941
  • When Javascript is enabled, Websites can detect use of Private Browsing mode
  • Private browsing breaks Kerberos authentication
  • Disables "Containers" functionality (see below)
  • "Always use private browsing mode" (browser.privatebrowsing.autostart) disables the possibility to use password manager: https://support.mozilla.org/en-US/kb/usernames-and-passwords-are-not-saved#w_private-browsing
  • Installing user.js will remove your browsing history, caches and local storage.
  • Installing user.js will remove your saved passwords (#27)
  • Clearing open windows on Firefox exit causes 2 windows to open when Firefox starts https://bugzilla.mozilla.org/show_bug.cgi?id=1334945
  • .URL shortcut files will be created with a generic icon
  • disabling "beforeunload" events may lead to losing data entered in web forms
  • OCSP leaks your IP and domains you visit to the CA when OCSP Stapling is not available on visited host
  • OCSP is vulnerable to replay attacks when nonce is not configured on the OCSP responder
  • OCSP adds latency (performance)
  • Short-lived certificates are not checked for revocation (security.pki.cert_short_lifetime_in_days, default:10)
  • Firefox falls back on plain OCSP when must-staple is not configured on the host certificate
  • security.OCSP.require will make the connection fail when the OCSP responder is unavailable
  • security.OCSP.require is known to break browsing on some captive portals

In addition see the current issues. You can use the web console to investigate what causes websites to break.


FAQ

Does this user.js file fix all security problems?

No. Please read Known problems and limitations, the project's issue tracker, and report new issues there. Please open separate issues for each individual problem/question you may have.

Why are obsolete/deprecated entries included in the user.js file?

This project is aimed at Firefox versions between the current ESR and the latest Firefox release. We will wait for widespread deployment of the current ESR (eg. adoption in major Linux distributions) before removing deprecated/obsolete preferences. Presence of deprecated entries causes no known problems.

Installing the user.js file breaks xyz plugin/addon/extension, how can I fix it?

See #100

Will there be an official addon/an android version/feature xyz?

Search the project issues.

How can I lock my preferences to prevent Firefox overwriting them?

See lockPref in System-wide installation.

Contributing

Yes please! All issues and pull requests are more than welcome. Please try to break down your pull requests or commits into small / manageable entities, so they are easier to process. All the settings in the user.js file should have some official references to them, so the effect of those settings can be easily verified from Mozilla's documentation.

Feel free to follow the latest commits RSS feed and other interesting feeds from the References section.

You may also reach other contributors through IRC (#user.js on Freenode) or Gitter.

For more information, see CONTRIBUTING


Online tests

Version checks

Fingerprinting tests

SSL tests

Other tests


References

Mozilla documentation

Other documentation

TLS/SSL documentation


Maintenance

Run make help to get a list of makefile targets used for frequent maintenance operations.

$ make help 
locked_user.js      generate a locked configuration file
systemwide_user.js  generate a system-wide configuration file
debian_locked.js    generate a locked, system-wide configuration file
policies.json       generate policy file (https://github.com/mozilla/policy-templates/blob/master/README.md)
tests               run all tests
test-acorn          validate user.js syntax
test-shellcheck     check/lint shell scripts
000-tor-browser.js  download Tor Browser custom configuration reference
diff-tbb            differences between values from this user.js and tor browser's values
diff-tbb-2          differences between values from this user.js and tor browser's values (alternate method)
diff-tbb-missing-from-user.js           preferences that are present in tor browser's defaults, but not in this user.js
diff-sourceprefs.js download and sort all known preferences files from Firefox (mozilla-central) source
diff-upstream-duplicates                preferences with common values with default Firefox configuration
diff-upstream-missing-from-user.js      preferences present in firefox source but not covered by user.js
diff-upstream-deprecated                preferences in hardened user.js that are no longer present in firefox source
diff-stats          count preferences number, various stats
clean               clean automatically generated files/build/test artifacts
doc-whatdoesitdo    generate the README "What does it do?" section
doc-toc             generate the README table of contents
help                generate list of targets with descriptions


user.js's People

Contributors

espionage724 avatar gitoffthelawn avatar graste avatar jason-cooke avatar josephg5 avatar jxdv avatar lenormf avatar mehmetaergun avatar neofright avatar nodiscc avatar publicarray avatar pyllyukko avatar stablestud avatar svobodajakub avatar uberspot avatar w4rh4wk avatar zummuz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

user.js's Issues

Spelling error in readme.md

Hi.
"Harden the browser, so it doesn't spill >it's< guts when asked (have you seen what BeEF can do?)"
it's should say its.

Great project by the way! Do you know of any similar Chrome projects?

Settings to look into

These settings in about:config might have some security/privacy related affect, but information about them is not that easily available:

  • security.ssl.false_start.require-npn
  • geo.wifi.uri
  • browser.formfill.saveHttpsForms
  • breakpad.reportURL (should we set this to ""?)
  • extensions.blocklist.level
  • network.stricttransportsecurity.preloadlist (quite self-explanatory, but needs reference)

See also:

DNS servers

I don't know if this is very off topic or if I may ask,

Is it important to change DNS servers? For security and performance.

At the moment I am using my network provider's default DNS servers.

Split up user.js

Please consider splitting up user.js to sections into user.js.d directory and add a build script:
cat user.js.d/* > user.js

Consider removing old settings

To simplify the config, consider removing old settings that no longer apply. As of Firefox 39.0.3, the following settings no longer apply:

  • browser.frames.enabled
  • browser.download.manager.retention
  • browser.history_expire_days
  • browser.history_expire_sites
  • browser.history_expire_visits
  • general.useragent.override
  • plugins.hide_infobar_for_outdated_plugin

Consider lockPref() and mozilla.cfg

When using user_pref() and user.js, Firefox and addons can change the values of your about:config entries during the session. It may not be permanent, but the effect essentially permanent (Firefox and addons can just enforce their own settings on startup every time).

Have you considered using lockPref() and mozilla.cfg instead? This prevents Firefox and addons from changing the entries' values. The downside is that if Firefox changes an entry's value that is considered more desirable than what you currently have, it will not be set and you will keep your existing, less desirable value. Practically speaking, the point of the user.js in this scenario is presumably already taking this into account, so it's not really a downside--just an inherent problem of using about:config entries in general (unless Mozilla decides to notify users of which about:config entries they have changed that conflict with your user-set entries).

On an unrelated note, you left browser.safebrowsing.malware.enabled to its default true--as a result, sites are sent to Google to be checked for malware. Many people who compiled lists of entries to enhance privacy have this set to false (including me) and instead use something dedicated to malware protection such as Malwarebytes Anti-Malware, which should be used regardless.

I can do a pull request if you want.

P.S.

network.seer.enabled is deprecated according to several sites. browser.sessionstore.enabled is deprecated. security.enable_ssl3 is deprecated.

about:networking

Hello
Question [about:networking] -- How to disable the experimental real time recordings for Http [Hostnames] | Sockets [IP @] | DNS | WebSockets ???
Your solutions in "about:config" please for the privacy ...
Thanks for your precious help ...
Regards,

Duplicated settings

The following settings are duplicated in the config file:
security.ssl3.dhe_dss_des_ede3_sha
security.ssl3.ecdh_ecdsa_des_ede3_sha
security.ssl3.ecdh_rsa_des_ede3_sha
security.ssl3.rsa_aes_128_sha
security.ssl3.rsa_aes_256_sha

The first 3 seem to be duplicated because they fulfill multiple criteria to be disabled. The fourth cipher on the list is commented out, but then enabled again later on. The last cipher is first disabled, then enabled again.

Consider removing duplicates to simplify the configuration file and remove conflicting settings.

list of firefox ocsp servers

i did this for my own reasons but thought i would post it here in case it would be useful to anybody else. i read my cert8.db and these were the ocsp servers i found. it could be useful for those who might go as far as to block all background connections except whitelisted ones, or maybe those who force https on all domains except whitelisted ones (the majority of ocsp servers dont use https). or maybe those just wondering what the connections to these ips are
see my post underneath this for ocsp servers not included by default

commercial.ocsp.identrust.com
ocsp.affirmtrust.com
ocsp.comodoca.com
ocsp.comodoca2.com
ocsp.comodoca3.com
ocsp.comodoca4.com
ocsp.digicert.com
ocsp.entrust.net
ocsp.geotrust.com
ocsp.globalsign.com
ocsp.godaddy.com
ocsp.netsolssl.com
ocsp.omniroot.com
ocsp.quovadisglobal.com
ocsp.root-x1.letsencrypt.org
ocsp.starfieldtech.com
ocsp.startssl.com
ocsp.swisssign.net
ocsp.thawte.com
ocsp.trust-provider.com
ocsp.trustwave.com
ocsp.usertrust.com
ocsp.verisign.com
ocsp.wosign.com
ocsp.ws.symantec.com
ocsp1.wosign.com
ocsp2.wosign.cn

IPs:

# host commercial.ocsp.identrust.com
commercial.ocsp.identrust.com has address 192.35.177.155
# host ocsp.affirmtrust.com
ocsp.affirmtrust.com has address 150.70.178.190
# host ocsp.comodoca.com
ocsp.comodoca.com has address 178.255.83.1
ocsp.comodoca.com has IPv6 address 2a02:1788:2fd::b2ff:5301
# host ocsp.comodoca2.com
ocsp.comodoca2.com is an alias for ocsp.comodoca2.com.edgesuite.net.
ocsp.comodoca2.com.edgesuite.net is an alias for a1638.b.akamai.net.
a1638.b.akamai.net has address 185.52.170.18
a1638.b.akamai.net has address 185.52.170.11
# host ocsp.comodoca3.com
ocsp.comodoca3.com is an alias for ocsp.comodoca2.com.edgesuite.net.
ocsp.comodoca2.com.edgesuite.net is an alias for a1638.b.akamai.net.
a1638.b.akamai.net has address 185.52.170.18
a1638.b.akamai.net has address 185.52.170.11
# host ocsp.comodoca4.com
ocsp.comodoca4.com has address 178.255.83.1
ocsp.comodoca4.com has IPv6 address 2a02:1788:2fd::b2ff:5301
# host ocsp.digicert.com
ocsp.digicert.com is an alias for cs9.wac.phicdn.net.
cs9.wac.phicdn.net has address 93.184.220.29
# host ocsp.entrust.net
ocsp.entrust.net is an alias for ocsp.entrust.net.edgekey.net.
ocsp.entrust.net.edgekey.net is an alias for e6913.dscx.akamaiedge.net.
e6913.dscx.akamaiedge.net has address 104.81.127.62
e6913.dscx.akamaiedge.net has IPv6 address 2a02:26f0:f:28a::1b01
e6913.dscx.akamaiedge.net has IPv6 address 2a02:26f0:f:287::1b01
# host ocsp.geotrust.com
ocsp.geotrust.com is an alias for ocsp-ds.ws.symantec.com.edgekey.net.
ocsp-ds.ws.symantec.com.edgekey.net is an alias for e8218.dscb1.akamaiedge.net.
e8218.dscb1.akamaiedge.net has address 23.46.123.27
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:282::201a
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:28b::201a
# host ocsp.globalsign.com
ocsp.globalsign.com has address 108.162.232.200
ocsp.globalsign.com has address 108.162.232.197
ocsp.globalsign.com has address 108.162.232.207
ocsp.globalsign.com has address 108.162.232.196
ocsp.globalsign.com has address 108.162.232.199
ocsp.globalsign.com has address 108.162.232.198
ocsp.globalsign.com has address 108.162.232.203
ocsp.globalsign.com has address 108.162.232.204
ocsp.globalsign.com has address 108.162.232.205
ocsp.globalsign.com has address 108.162.232.202
ocsp.globalsign.com has address 108.162.232.201
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8cd
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c8
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8cc
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c7
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c5
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8ca
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8cf
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c6
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c9
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8cb
ocsp.globalsign.com has IPv6 address 2400:cb00:2048:1::6ca2:e8c4
# host ocsp.godaddy.com
ocsp.godaddy.com is an alias for ocsp.godaddy.com.akadns.net.
ocsp.godaddy.com.akadns.net has address 188.121.36.239
# host ocsp.netsolssl.com
ocsp.netsolssl.com is an alias for ocsp.comodoca.com.
ocsp.comodoca.com has address 178.255.83.1
ocsp.comodoca.com has IPv6 address 2a02:1788:2fd::b2ff:5301
# host ocsp.omniroot.com
ocsp.omniroot.com is an alias for wac.BFDD.edgecastcdn.net.
wac.BFDD.edgecastcdn.net is an alias for gpla1.wac.v2cdn.net.
gpla1.wac.v2cdn.net has address 93.184.220.20
# host ocsp.quovadisglobal.com
ocsp.quovadisglobal.com has address 199.68.194.254
# host ocsp.root-x1.letsencrypt.org
ocsp.root-x1.letsencrypt.org is an alias for ocsp.root-x1.letsencrypt.org.edgesuite.net.
ocsp.root-x1.letsencrypt.org.edgesuite.net is an alias for a1126.dscd.akamai.net.
a1126.dscd.akamai.net has address 185.52.170.9
a1126.dscd.akamai.net has address 185.52.170.24
a1126.dscd.akamai.net has IPv6 address 2a02:d88:3::b934:aa18
a1126.dscd.akamai.net has IPv6 address 2a02:d88:3::b934:aa09
# host ocsp.starfieldtech.com
ocsp.starfieldtech.com is an alias for ocsp.godaddy.com.akadns.net.
ocsp.godaddy.com.akadns.net has address 188.121.36.239
# host ocsp.startssl.com
ocsp.startssl.com is an alias for www.startssl.com.edgesuite.net.
www.startssl.com.edgesuite.net is an alias for a1603.g1.akamai.net.
a1603.g1.akamai.net has address 185.52.170.16
a1603.g1.akamai.net has address 185.52.170.26
# host ocsp.swisssign.net
ocsp.swisssign.net has address 91.194.146.7
# host ocsp.thawte.com
ocsp.thawte.com is an alias for ocsp-ds.ws.symantec.com.edgekey.net.
ocsp-ds.ws.symantec.com.edgekey.net is an alias for e8218.dscb1.akamaiedge.net.
e8218.dscb1.akamaiedge.net has address 23.46.123.27
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:282::201a
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:28b::201a
# host ocsp.trust-provider.com
ocsp.trust-provider.com is an alias for ocsp.comodoca.com.
ocsp.comodoca.com has address 178.255.83.1
ocsp.comodoca.com has IPv6 address 2a02:1788:2fd::b2ff:5301
# host ocsp.trustwave.com
ocsp.trustwave.com is an alias for ocsp.trustwave.com.edgesuite.net.
ocsp.trustwave.com.edgesuite.net is an alias for a1213.g.akamai.net.
a1213.g.akamai.net has address 185.52.170.26
a1213.g.akamai.net has address 185.52.170.19
# host ocsp.usertrust.com
ocsp.usertrust.com has address 178.255.83.1
ocsp.usertrust.com has IPv6 address 2a02:1788:2fd::b2ff:5301
# host ocsp.verisign.com
ocsp.verisign.com is an alias for ocsp-ds.ws.symantec.com.edgekey.net.
ocsp-ds.ws.symantec.com.edgekey.net is an alias for e8218.dscb1.akamaiedge.net.
e8218.dscb1.akamaiedge.net has address 23.46.123.27
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:282::201a
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:28b::201a
# host ocsp.wosign.com
ocsp.wosign.com has address 202.102.99.245
ocsp.wosign.com has address 106.120.160.249
# host ocsp.ws.symantec.com
ocsp.ws.symantec.com is an alias for ocsp-ds.ws.symantec.com.edgekey.net.
ocsp-ds.ws.symantec.com.edgekey.net is an alias for e8218.dscb1.akamaiedge.net.
e8218.dscb1.akamaiedge.net has address 23.46.123.27
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:282::201a
e8218.dscb1.akamaiedge.net has IPv6 address 2a02:26f0:f:28b::201a
# host ocsp1.wosign.com
ocsp1.wosign.com has address 106.120.160.249
# host ocsp2.wosign.cn
ocsp2.wosign.cn has address 106.120.160.249

[Talk] alternative to plugins.enumerable_names

mozilla removed the plugins.enumerable_names leaving people's plugins list exposed but in this thread some solutions were found: dillbyrne/random-agent-spoofer#283

a user created a userscript which can easily be a noscript surrogate instead dillbyrne/random-agent-spoofer#283 (comment)

noscript.surrogate.noplugin.exceptions =
noscript.surrogate.noplugin.replacement=Object.defineProperty(navigator, "plugins", {value: []});
noscript.surrogate.noplugin.sources=@^https?://

this hides plugins from websites for noscript users. not sure if this is something to include in user.js but i hope people will find it useful

network.dns.disablePrefetch is supposed to be true

In order for the browser to not prefetch DNS entries for resources, it should be set to true.

Change:
user_pref("network.dns.disablePrefetch", false);
to
user_pref("network.dns.disablePrefetch", true);

Spelling mistake

Is DuckDcukGo not supposed to be DuckDuckGo?

user_pref("browser.search.defaultenginename", "DuckDcukGo");

sync via services.sync.prefs.sync booleans

I don't know if this is well known but supposedly you're able to sync any random about:config entry by creating a boolean with the convention:
services.sync.prefs.sync.[config name] = true
ex:
services.sync.prefs.sync.beacon.enabled = true

personally, I do this with all of my custom prefs vs. using the userprefs.js... or at least complementing it.

I'm pretty sure this document still applies. I also add the little sync rotating icon to my toolbar to confirm that as I make changes it rotates, acknowledging it sync those settings I change.
https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Firefox_Sync/Syncing_custom_preferences

browser.pagethumbnails.capturing_disabled

You have set
user_pref("browser.pagethumbnails.capturing_disabled", false);

This means the feature is active.
Mozillas wiki page regarding that setting is contradictory, quote:

Default value: true

Values
false (default)
The application creates screenshots of visited web pages.
true
The application doesn't create screenshots of visited web pages.

Given the name of the setting it must be assumed that setting it to true means the feature is turned off.

possible additions related to telemetry and datareporting

toolkit.telemetry.unified -> false
toolkit.telemetry.unifiedIsOptIn -> true
toolkit.telemetry.archive.enabled -> false i looked in my profile folder and found that it was storing things in a folder called /saved-telemetry-pings/
toolkit.telemetry.server -> ""
experiments.manifest.uri -> ""
toolkit.telemetry.cachedClientID -> ""
datareporting.policy.dataSubmissionEnabled -> false
datareporting.healthreport.pendingDeleteRemoteData -> false
datareporting.sessions.currentIndex -> 0 or "0"? in one of my firefox's its a string and in one its an integer lol
datareporting.sessions.prunedIndex -> 0
experiments.enabled -> false
experiments.supported -> false

sources:
https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html
https://wiki.mozilla.org/QA/Telemetry/AboutPreferences
my about:config

you might wanna search your about:config for 'datareporting' and 'telemetry'. mine had a lot of weird datareporting session things saved which i removed. also check the /datareporting/ folder in your profile folder. it seems to be recreated and files written even when these features are disabled? i added them to ccleaner and also the /saved-telemetry-pings/ folder. its worth it checking your profile folder for unnecessary/weird files and folders if your profile is as old as mine.

Can't search in Address/URL bar?

Seems like I can't search anymore in the Adress/URL bar. It only works with the dedicated search bar. The error I get is "Server not found". Any idea which setting I need to change in order to fix this?

[question] commented options

Hi,
why this options are commented:
//user_pref("dom.storage.enabled", false);
//user_pref("browser.cache.memory.enable", false);?
Can it break something? I assume this entries are quite important for privacy, aren't they? The second one allows to set unique identificator by e-tag and the first one allows to set kind of cookies?

include a method for users to easily include custom entries / override this user.js

didnt know how to word title properly.

info here #54
one may want to use this user.js but have a few things in it which they want configured differently. appending to the end of the file overrides previous entries but apparently that breaks git stuff

i just came across this http://kb.mozillazine.org/Locking_preferences
havent tried it yet but it if a file of lockprefs can override user.js then this might be a solution? people would just need to add their preferences as lockprefs in the lockprefs file. but i just realised, if it reads these files in a particular order, it may be possible to just put regular user_pref's in one of these files

will test

Can Zenmate be edited?

Hello all

One question: can the Zenmate browser extension be edited? The reason I'm asking is that when the web browser (Firefox or Chrome) is opened up with the internet lead disconnected, Zenmate still says that it is connected publicly to the last place the user chose, for example Germany.

This makes me think that the locations that can be chosen is in the code somewhere within the .XPI file, rather than coming from Zenmate's own server. Is this right or not and if so, where is the code? If it is right, how is it possible to add the UK to the list again?

Many thanks.

uBlock filters setup

What setup do you recommend for a non-advanced Mac Firefox user for uBlock?

Also, if you have other important extensions you recommend, just scream it out.

I might as well list my current setup:
EasyList‎
Peter Lowe’s Ad server list‎
EasyPrivacy‎
Malware Domain List‎
Malware domains‎
Fanboy’s Annoyance List‎
Dan Pollock’s hosts file‎
hpHosts’ Ad and tracking servers‎
Fanboy's Swedish‎ (since I am Swedish)

Thanks a lot!

Add TOC, or move README sections to Wiki

Just a small suggestion. I see that the README is quite long, with many external links throughout. Personally, all the information would be easier to consume if the single file was divided into several wiki articles here.

I am interested in hearing what others have to say. I mean, even if the wiki option was turned down, I think a TOC in the README would be the best alternative.

changes to trackingprotection and safebrowsing

for those who are interested (i noticed a TODO in user.js), i came across these and it seems like these 2 features might be merging or just adding new preferences in firefox 43 (user.js is also missing some of the older preferences such as privacy.trackingprotection.pbmode.enabled (just for the sake of it))

https://wiki.mozilla.org/Safe_Browsing
https://wiki.mozilla.org/Security/Tracking_protection

i personally disable both features so im not sure what the best course of action would be for user.js

if this brings nothing to the table close the issue i guess

blog: can we be tracked via mozilla's addon blocklist updates? [PARANOID MODE]

i just want to see what people think about this lol. its not me asking for anything to be put in user.js. i had uMatrix's behind-the-scene logger open and then firefox tried to update its addon blocklist. this was the url: https://blocklist.addons.mozilla.org/blocklist/3/%7Bec8030f7-c20a-464f-9b0e-13a3a9e97384%7D/41.0.2/Firefox/20151014143721/WINNT_x86-msvc/en-US/release/Windows_NT%206.1/default/default/7/528/1/. so i checked about:config and i saw that extensions.blocklist.url = https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/%PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/
this is the only update url in about:config that i can see which sends so many items in the url. i wondered if it really needed all that information. so i requested https://blocklist.addons.mozilla.org/blocklist/3/%20/%20/%20/%20/%20/%20/%20/%20/%20/%20/%20/%20/%20/ and i got exactly the same results in return. as long as the right amount of values are in the url it gives the same blocklist. it doesnt matter what the values are. im guessing its just to build statistics or something?

then i thought about spoofing some of the values but then i realised that it wasnt worth it. but the ping values interested me.
%TOTAL_PING_COUNT% seems to be the total amount of times my browser has updated its blocklist ever and it is stored in about:config as extensions.blocklist.pingCountTotal
%PING_COUNT% is the amount of times my browser has updated the blocklist on this browser version and the value is stored at extensions.blocklist.pingCountVersion
%DAYS_SINCE_LAST_PING% is what it sounds like and if u use ur browser everyday it will be 1 since the default blocklist update interval extensions.blocklist.interval is set to 24 hours

im definitely not claiming mozilla is tracking users through this lol, but maybe some people can see how it could be used that way. not only does the server recieve every day (if you are online everyday) your OS, browser version etc etc., it has unique numbers of how many times the url has been accessed and how long ago which greatly improve its ability to point back to you. remember its all probably linked back to your ip address too. what can they tell from it? probably not much lol. that you were online? you used your browser today?

if that bothers someone they could make user.js reset extensions.blocklist.pingCountTotal and extensions.blocklist.pingCountVersion or they could modify extensions.blocklist.url to always send a value like 1 or something else for the ping counts. though that would make you more trackable unless your ip changed a lot. the best thing would be to randomize the values, but that would require an extension probably and who cares enough to make that?

by the time i finished writing this my conviction that these are things we shouldnt mess with has only grown stronger. thanks for reading i dont know why i wrote this

Consider the following settings

The following settings are "true" by default (Firefox 39.0.3), and should perhaps not be in a hardened config:

gfx.downloadable_fonts.enabled
network.dns.disableIPv6
media.autoplay.enabled
media.wave.enabled
media.webm.enabled
media.webvtt.enabled
media.opus.enabled
media.ogg.enabled
media.eme.enabled
media.directshow.enabled
media.windows-media-foundation.enabled
media.raw.enabled
browser.safebrowsing.downloads.remote.enabled
network.negotiate-auth.allow-proxies
dom.broadcastChannel.enabled
browser.urlbar.suggest.bookmark
browser.urlbar.suggest.history
security.ssl.errorReporting.enabled
media.eme.enabled
browser.taskbar.lists.enabled
browser.uitour.enabled
camera.control.face_detection.enabled
dom.ipc.plugins.enabled
dom.server-events.enabled
dom.vibrator.enabled
experiments.enabled
extensions.getAddons.cache.enabled
social.remote-install.enabled
social.toast-notifications.enabled

Review and merge Icecat setting toggles?

Hi, I was reading https://www.gnu.org/software/gnuzilla/ and found out it has a special about:icecat page

Adds a custom "about:icecat" homepage with links to information about the free software and privacy features in IceCat, and checkboxes to enable and disable the ones more prone to break websites.

Since people tend to recommend Icecat as a countermeasure to Firefox/Mozilla's recent "misbehaviour", and that Icecat is an outdated, low-workforce fork of Firefox which seems to only bring preinstalled addons and config changes, I think reasonable Free Software oriented distributions could simply distribute FF with an altered default config like this user.js. I have started working on a more "relaxed" preferences set in https://github.com/nodiscc/user.js/commits/dbu and I wish we could convice the Debian project to distribute this by default - there are several open bug requests on the Debian BTS for similar issues.

I am still curious whether Icecat has something more to offer; would an Icecat user please copy-paste the settings found in about:icecat here?

This would allow working on privacy/security/FOSS-oriented settings that user.js may be missing. The about:icecat is also similar to the request in #25.

Addon "Zenmate VPN" broken

I created a fresh profile, copied the user.js to this profile and installed the zenmate Addon from https://www.zenmate.com.

After starting vpn connection trough the addon no more website conenction is possible -> "Connection failed". I read that some settings can break addon functions. Do you have a hint what setting cause the issue?

Version: 42.0b4 (x64) @ Windows 7 Prof. x64
Build-ID: 20151005144425

Please let me know if you need more informations.

Firefox connections on about:blank page

Hi, just installed user.js and I've noticed that when I start Firefox (about:blank is my start page) he make some connections:
netstat -nputw|grep firefox
tcp 0 0 xxx.xxx.xxx.xxx:33848 216.58.208.206:443 ESTABLISHED 13427/firefox
tcp 0 0 xxx.xxx.xxx.xxx:49776 216.58.208.206:80 ESTABLISHED 13427/firefox
tcp 0 0 xxx.xxx.xxx.xxx:42962 93.184.220.29:80 ESTABLISHED 13427/firefox
tcp 0 0 xxx.xxx.xxx.xxx:41561 52.25.32.149:443 ESTABLISHED 13427/firefox
tcp 0 0 xxx.xxx.xxx.xxx:33846 216.58.208.206:443 ESTABLISHED 13427/firefox
tcp 0 0 xxx.xxx.xxx.xxx:36906 68.232.34.191:443 ESTABLISHED 14420/firefox

There is any way in user.js to disable this automatic connections?
Thanks!

PS. OS: Fedora 22 x64, Firefox 38.0.5, no add-ons loaded

Questions and notices on first run

I use Firefox without installation: extract, use, delete so I need to suppress initial questions and notices. Here they are:

user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.rights.3.shown", true);
user_pref("browser.toolbarbuttons.introduced.pocket-button", false);
user_pref("datareporting.healthreport.service.firstRun", true);
user_pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true);
user_pref("browser.reader.detectedFirstArticle", true);
user_pref("browser.displayedE10SPrompt.1", 1);
user_pref("browser.displayedE10SNotice", 4);
user_pref("browser.urlbar.userMadeSearchSuggestionsChoice", true);

Please consider including them in the README.

user.js breaks some extensions (apparently ToggleButton)

It seems that some setting in this user.js breaks some extensions. Apparently it affects the ToggleButton UI feature.

OneTwo extensions that isare lacking the buttons are is Privacy Badger and Shodan Firefox Add-on.

Some error relating to this issue:

*************************
A coding exception was thrown and uncaught in a Task.

Full message: TypeError: this.Paths is null
Full stack: Agent.wipe@resource:///modules/sessionstore/SessionWorker.js:236:7
worker.dispatch@resource:///modules/sessionstore/SessionWorker.js:21:24
anonymous/AbstractWorker.prototype.handleMessage@resource://gre/modules/workers/PromiseWorker.js:122:16
@resource:///modules/sessionstore/SessionWorker.js:30:41

Installation of user.js causes saved passwords to be removed

Installation of user.js causes saved passwords to be removed from the Firefox This wasn't explicitly listed as intended behavior in the README file, though it appears to be quite intentional. I would suggest warning potential users about what may be, to them, an unintended consequence. Strong language about backing up profile data before proceeding would be highly advisable.

Otherwise, great work.

Font fingerprinting

I have found out that browser.display.use_document_fonts can be used to disable font fingerprinting. I have used it in my own user.js and have not found a problem with it. I recommend adding it to this project.

// disable front fingerprinting
// test with http://www.browserleaks.com/fonts or https://panopticlick.eff.org
user_pref("browser.display.use_document_fonts", 0);

before:
screen shot 2016-02-17 at 1 04 16 pm
after:
screen shot 2016-02-17 at 1 05 06 pm

DNT HTTP header

Enables Firefox's built-in tracking protection

This is actually counterproductive. Websites are not forced to honour the browser's request to not be tracked and thus, you are more likely to be tracked across the web for displaying "suspicious behaviour."
The superior approach is to not include anything in the HTTP header.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.