11/******
22* name: arkenfox user.js
3- * date: 7 June 2024
4- * version: 126
3+ * date: 26 August 2024
4+ * version: 128
55* urls: https://github.com/arkenfox/user.js [repo]
66* : https://arkenfox.github.io/gui/ [interactive]
77* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
5757 2700: ETP (ENHANCED TRACKING PROTECTION)
5858 2800: SHUTDOWN & SANITIZING
5959 4000: FPP (fingerprintingProtection)
60- 4500: RFP (resistFingerprinting)
60+ 4500: OPTIONAL RFP (resistFingerprinting)
6161 5000: OPTIONAL OPSEC
6262 5500: OPTIONAL HARDENING
6363 6000: DON'T TOUCH
@@ -103,14 +103,9 @@ user_pref("browser.newtabpage.activity-stream.default.sites", "");
103103
104104/*** [SECTION 0200]: GEOLOCATION ***/
105105user_pref ( "_user.js.parrot" , "0200 syntax error: the parrot's definitely deceased!" ) ;
106- /* 0201: use Mozilla geolocation service instead of Google if permission is granted [FF74+]
107- * Optionally enable logging to the console (defaults to false) ***/
108- user_pref ( "geo.provider.network.url" , "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%" ) ;
109- // user_pref("geo.provider.network.logging.enabled", true); // [HIDDEN PREF]
110106/* 0202: disable using the OS's geolocation service ***/
111107user_pref ( "geo.provider.ms-windows-location" , false ) ; // [WINDOWS]
112108user_pref ( "geo.provider.use_corelocation" , false ) ; // [MAC]
113- user_pref ( "geo.provider.use_gpsd" , false ) ; // [LINUX] [HIDDEN PREF]
114109user_pref ( "geo.provider.use_geoclue" , false ) ; // [FF102+] [LINUX]
115110
116111/*** [SECTION 0300]: QUIETER FOX ***/
@@ -236,7 +231,7 @@ user_pref("network.prefetch-next", false);
236231/* 0602: disable DNS prefetching
237232 * [1] https://developer.mozilla.org/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control ***/
238233user_pref ( "network.dns.disablePrefetch" , true ) ;
239- // user_pref("network.dns.disablePrefetchFromHTTPS", true); // [DEFAULT: true]
234+ user_pref ( "network.dns.disablePrefetchFromHTTPS" , true ) ;
240235/* 0603: disable predictor / prefetching ***/
241236user_pref ( "network.predictor.enabled" , false ) ;
242237user_pref ( "network.predictor.enable-prefetch" , false ) ; // [FF48+] [DEFAULT: false]
@@ -284,7 +279,7 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: ""
284279 * [SETTING] Privacy & Security>DNS over HTTPS
285280 * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/
286281 * [2] https://wiki.mozilla.org/Security/DOH-resolver-policy
287- * [3] https://support.mozilla.org/en-US/ kb/firefox-dns-over-https
282+ * [3] https://support.mozilla.org/kb/firefox-dns-over-https
288283 * [4] https://www.eff.org/deeplinks/2020/12/dns-doh-and-odoh-oh-my-year-review-2020 ***/
289284 // user_pref("network.trr.mode", 3);
290285/* 0712: set DoH provider
@@ -303,13 +298,13 @@ user_pref("browser.urlbar.speculativeConnect.enabled", false);
303298 * [NOTE] The UI is controlled by the .enabled pref
304299 * [SETTING] Search>Address Bar>Suggestions from...
305300 * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/
306- // user_pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+] [DEFAULT: false ]
307- // user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] [DEFAULT: false ]
308- // user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] [DEFAULT: false ]
301+ user_pref ( "browser.urlbar.quicksuggest.enabled" , false ) ; // [FF92+]
302+ user_pref ( "browser.urlbar.suggest.quicksuggest.nonsponsored" , false ) ; // [FF95+]
303+ user_pref ( "browser.urlbar.suggest.quicksuggest.sponsored" , false ) ; // [FF92+]
309304/* 0803: disable live search suggestions
310305 * [NOTE] Both must be true for live search to work in the location bar
311306 * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine
312- * [SETTING] Search>Provide search suggestions | Show search suggestions in address bar results ***/
307+ * [SETTING] Search>Show search suggestions | Show search suggestions in address bar results ***/
313308user_pref ( "browser.search.suggest.enabled" , false ) ;
314309user_pref ( "browser.urlbar.suggest.searches" , false ) ;
315310/* 0805: disable urlbar trending search suggestions [FF118+]
@@ -323,9 +318,13 @@ user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: fa
323318user_pref ( "browser.urlbar.yelp.featureGate" , false ) ; // [FF124+] [DEFAULT: false]
324319/* 0807: disable urlbar clipboard suggestions [FF118+] ***/
325320 // user_pref("browser.urlbar.clipboard.featureGate", false);
321+ /* 0808: disable recent searches [FF120+]
322+ * [NOTE] Recent searches are cleared with history (2811)
323+ * [1] https://support.mozilla.org/kb/search-suggestions-firefox ***/
324+ // user_pref("browser.urlbar.recentsearches.featureGate", false);
326325/* 0810: disable search and form history
327- * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2]
328326 * [NOTE] We also clear formdata on exit (2811)
327+ * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2]
329328 * [SETTING] Privacy & Security>History>Custom Settings>Remember search and form history
330329 * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html
331330 * [2] https://bugzilla.mozilla.org/381681 ***/
@@ -377,8 +376,8 @@ user_pref("network.auth.subresource-http-auth-allow", 1);
377376/*** [SECTION 1000]: DISK AVOIDANCE ***/
378377user_pref ( "_user.js.parrot" , "1000 syntax error: the parrot's gone to meet 'is maker!" ) ;
379378/* 1001: disable disk cache
380- * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this
381- * [NOTE] We also clear cache on exit (2811) ***/
379+ * [NOTE] We also clear cache on exit (2811)
380+ * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this ***/
382381user_pref ( "browser.cache.disk.enable" , false ) ;
383382/* 1002: disable media cache from writing to disk in Private Browsing
384383 * [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB ***/
@@ -530,7 +529,7 @@ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!");
530529user_pref ( "media.peerconnection.ice.proxy_only_if_behind_proxy" , true ) ;
531530/* 2003: force a single network interface for ICE candidates generation [FF42+]
532531 * When using a system-wide proxy, it uses the proxy interface
533- * [1] https://developer.mozilla.org/en-US/ docs/Web/API/RTCIceCandidate
532+ * [1] https://developer.mozilla.org/docs/Web/API/RTCIceCandidate
534533 * [2] https://wiki.mozilla.org/Media/WebRTC/Privacy ***/
535534user_pref ( "media.peerconnection.ice.default_address_only" , true ) ;
536535/* 2004: force exclusion of private IPs from ICE candidates [FF51+]
@@ -592,8 +591,10 @@ user_pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: fa
592591/* 2630: disable content analysis by DLP (Data Loss Prevention) agents
593592 * DLP agents are background processes on managed computers that allow enterprises to monitor locally running
594593 * applications for data exfiltration events, which they can allow/block based on customer defined DLP policies.
594+ * 0=Block all requests, 1=Warn on all requests (which lets the user decide), 2=Allow all requests
595595 * [1] https://github.com/chromium/content_analysis_sdk */
596- user_pref ( "browser.contentanalysis.default_allow" , false ) ; // [FF124+] [DEFAULT: false]
596+ user_pref ( "browser.contentanalysis.enabled" , false ) ; // [FF121+] [DEFAULT: false]
597+ user_pref ( "browser.contentanalysis.default_result" , 0 ) ; // [FF127+] [DEFAULT: 0]
597598
598599/** DOWNLOADS ***/
599600/* 2651: enable user interaction for security by always asking where to download
@@ -638,12 +639,14 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF]
638639 * Opener and redirect heuristics are granted for 30 days, see [3]
639640 * [1] https://blog.mozilla.org/security/2021/07/13/smartblock-v2/
640641 * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12
641- * [3] https://developer.mozilla.org/en-US/ docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/
642+ * [3] https://developer.mozilla.org/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/
642643 // user_pref("privacy.antitracking.enableWebcompat", false);
643644
644645/*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/
645646user_pref ( "_user.js.parrot" , "2800 syntax error: the parrot's bleedin' demised!" ) ;
646647/* 2810: enable Firefox to clear items on shutdown
648+ * [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811), or manually via site data (2820) and
649+ * via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815)
647650 * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/
648651user_pref ( "privacy.sanitize.sanitizeOnShutdown" , true ) ;
649652
@@ -665,9 +668,8 @@ user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [F
665668
666669/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ | v2 migration is FF128+ ***/
667670/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME]
668- * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note below).
669- * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for
670- * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on)
671+ * [NOTE] Exceptions: A "cookie" permission also controls "offlineApps" (see note below). For cross-domain logins,
672+ * add exceptions for both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on)
671673 * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache)
672674 * [NOTE] "sessions": Active Logins (has no site exceptions): refers to HTTP Basic Authentication [1], not logins via cookies
673675 * [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271)
@@ -722,7 +724,9 @@ user_pref("privacy.sanitize.timeSpan", 0);
722724
723725 In FF118+ FPP is on by default in private windows (4001) and in FF119+ is controlled
724726 by ETP (2701). FPP will also use Remote Services in future to relax FPP protections
725- on a per site basis for compatibility (4003).
727+ on a per site basis for compatibility (4004).
728+
729+ https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargetsDefault.inc
726730
727731 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux)
728732 https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc
@@ -733,19 +737,27 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
733737 * [NOTE] In FF119+, FPP for all modes (7016) is enabled with ETP Strict (2701) ***/
734738 // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+]
735739/* 4002: set global FPP overrides [FF114+]
736- * Controls what protections FPP uses globally, including "RFPTargets" ( despite the name these are
737- * not used by RFP) e.g. "+AllTargets,-CSSPrefersColorScheme" or "-AllTargets,+CanvasRandomization"
738- * [NOTE] Be aware that not all RFP protections are necessarily in RFPTargets
739- * [WARNING ] Not recommended . Either use RFP or FPP at defaults
740+ * uses "RFPTargets" [1] which despite the name these are not used by RFP
741+ * e.g. "+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC" = all targets but allow prefers-color-scheme and do not change timezone
742+ * e.g. "-AllTargets,+CanvasRandomization,+JSDateTimeUTC" = no targets but do use FPP canvas and change timezone
743+ * [NOTE ] Not supported by arkenfox . Either use RFP or FPP at defaults
740744 * [1] https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargets.inc ***/
741745 // user_pref("privacy.fingerprintingProtection.overrides", "");
742- /* 4003: disable remote FPP overrides [FF127+] ***/
746+ /* 4003: set granular FPP overrides
747+ * JSON format: e.g."[{\"firstPartyDomain\": \"netflix.com\", \"overrides\": \"-CanvasRandomization,-FrameRate,\"}]"
748+ * [NOTE] Not supported by arkenfox. Either use RFP or FPP at defaults ***/
749+ // user_pref("privacy.fingerprintingProtection.granularOverrides", "");
750+ /* 4004: disable remote FPP overrides [FF127+] ***/
743751 // user_pref("privacy.fingerprintingProtection.remoteOverrides.enabled", false);
744752
745- /*** [SECTION 4500]: RFP (resistFingerprinting)
753+ /*** [SECTION 4500]: OPTIONAL RFP (resistFingerprinting)
746754 RFP overrides FPP (4000)
747755
748- It is an all-or-nothing buy in: you cannot pick and choose what parts you want
756+ FF128+ Arkenfox by default uses FPP (automatically enabled with ETP Strict). For most people
757+ this is all you need. To use RFP instead, add RFP (4501) to your overrides, and optionally
758+ add letterboxing (4504), spoof_english (4506), and webgl (4520).
759+
760+ RFP is an all-or-nothing buy in: you cannot pick and choose what parts you want
749761 [TEST] https://arkenfox.github.io/TZP/tzp.html
750762
751763 [WARNING] DO NOT USE extensions to alter RFP protected metrics
@@ -800,13 +812,12 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
800812***/
801813user_pref ( "_user.js.parrot" , "4500 syntax error: the parrot's popped 'is clogs" ) ;
802814/* 4501: enable RFP
803- * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar.
804- * RFP also has a few side effects: mainly timezone is UTC, and websites will prefer light theme
805815 * [NOTE] pbmode applies if true and the original pref is false
806- * [1] https://bugzilla.mozilla.org/418986 ***/
807- user_pref ( "privacy.resistFingerprinting" , true ) ; // [FF41+]
816+ * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar.
817+ * RFP also has a few side effects: mainly that timezone is GMT, and websites will prefer light theme ***/
818+ // user_pref("privacy.resistFingerprinting", true); // [FF41+]
808819 // user_pref("privacy.resistFingerprinting.pbmode", true); // [FF114+]
809- /* 4502: set new window size rounding max values [FF55+]
820+ /* 4502: set RFP new window size max rounded values [FF55+]
810821 * [SETUP-CHROME] sizes round down in hundreds: width to 200s and height to 100s, to fit your screen
811822 * [1] https://bugzilla.mozilla.org/1330882 ***/
812823user_pref ( "privacy.window.maxInnerWidth" , 1600 ) ;
@@ -815,7 +826,7 @@ user_pref("privacy.window.maxInnerHeight", 900);
815826 * [NOTE] To allow extensions to work on AMO, you also need 2662
816827 * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/
817828user_pref ( "privacy.resistFingerprinting.block_mozAddonManager" , true ) ;
818- /* 4504: enable RFP letterboxing [FF67+]
829+ /* 4504: enable letterboxing [FF67+]
819830 * Dynamically resizes the inner window by applying margins in stepped ranges [2]
820831 * If you use the dimension pref, then it will only apply those resolutions.
821832 * The format is "width1xheight1, width2xheight2, ..." (e.g. "800x600, 1000x1000")
@@ -824,27 +835,19 @@ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);
824835 * [WARNING] DO NOT USE: the dimension pref is only meant for testing
825836 * [1] https://bugzilla.mozilla.org/1407366
826837 * [2] https://hg.mozilla.org/mozilla-central/rev/6d2d7856e468#l2.32 ***/
827- user_pref ( "privacy.resistFingerprinting.letterboxing" , true ) ; // [HIDDEN PREF]
838+ // user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF]
828839 // user_pref("privacy.resistFingerprinting.letterboxing.dimensions", ""); // [HIDDEN PREF]
829- /* 4505: experimental RFP [FF91+]
830- * [WARNING] DO NOT USE unless testing, see [1] comment 12
831- * [1] https://bugzilla.mozilla.org/1635603 ***/
840+ /* 4505: disable RFP by domain [FF91+] ***/
832841 // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid");
833842/* 4506: disable RFP spoof english prompt [FF59+]
834- * 0=prompt, 1=disabled, 2=enabled (requires RFP)
843+ * 0=prompt, 1=disabled, 2=enabled
835844 * [NOTE] When changing from value 2, preferred languages ('intl.accept_languages') is not reset.
836845 * [SETUP-WEB] when enabled, sets 'en-US, en' for displaying pages and 'en-US' as locale.
837846 * [SETTING] General>Language>Choose your preferred language for displaying pages>Choose>Request English... ***/
838847user_pref ( "privacy.spoof_english" , 1 ) ;
839848/* 4510: disable using system colors
840849 * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/
841850user_pref ( "browser.display.use_system_colors" , false ) ; // [DEFAULT: false NON-WINDOWS]
842- /* 4511: enforce non-native widget theme
843- * Security: removes/reduces system API calls, e.g. win32k API [1]
844- * Fingerprinting: provides a uniform look and feel across platforms [2]
845- * [1] https://bugzilla.mozilla.org/1381938
846- * [2] https://bugzilla.mozilla.org/1411425 ***/
847- user_pref ( "widget.non-native-theme.enabled" , true ) ; // [DEFAULT: true]
848851/* 4512: enforce links targeting new windows to open in a new tab instead
849852 * 1=most recent window or tab, 2=new window, 3=new tab
850853 * Stops malicious window sizes and some screen resolution leaks.
@@ -856,9 +859,8 @@ user_pref("browser.link.open_newwindow", 3); // [DEFAULT: 3]
856859/* 4513: set all open window methods to abide by "browser.link.open_newwindow" (4512)
857860 * [1] https://searchfox.org/mozilla-central/source/dom/tests/browser/browser_test_new_window_from_content.js ***/
858861user_pref ( "browser.link.open_newwindow.restriction" , 0 ) ;
859- /* 4520: disable WebGL (Web Graphics Library)
860- * [SETUP-WEB] If you need it then override it. RFP still randomizes canvas for naive scripts ***/
861- user_pref ( "webgl.disabled" , true ) ;
862+ /* 4520: disable WebGL (Web Graphics Library) ***/
863+ // user_pref("webgl.disabled", true);
862864
863865/*** [SECTION 5000]: OPTIONAL OPSEC
864866 Disk avoidance, application data isolation, eyeballs...
@@ -971,7 +973,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!");
971973 * [2] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=asm.js
972974 * [3] https://rh0dev.github.io/blog/2017/the-return-of-the-jit/ ***/
973975 // user_pref("javascript.options.asmjs", false);
974- /* 5505: disable Ion and baseline JIT to harden against JS exploits
976+ /* 5505: disable Ion and baseline JIT to harden against JS exploits [RESTART]
975977 * [NOTE] When both Ion and JIT are disabled, and trustedprincipals
976978 * is enabled, then Ion can still be used by extensions (1599226)
977979 * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=firefox+jit
@@ -1000,8 +1002,8 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!");
10001002/* 5509: disable IPv6 if using a VPN
10011003 * This is an application level fallback. Disabling IPv6 is best done at an OS/network
10021004 * level, and/or configured properly in system wide VPN setups.
1003- * [SETUP-WEB] PR_CONNECT_RESET_ERROR
10041005 * [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT"
1006+ * [SETUP-WEB] PR_CONNECT_RESET_ERROR
10051007 * [TEST] https://ipleak.org/
10061008 * [1] https://www.internetsociety.org/tag/ipv6-security/ (Myths 2,4,5,6) ***/
10071009 // user_pref("network.dns.disableIPv6", true);
@@ -1047,6 +1049,9 @@ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
10471049/* 6050: prefsCleaner: previously active items removed from arkenfox 115-127 ***/
10481050 // user_pref("accessibility.force_disabled", "");
10491051 // user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", "");
1052+ // user_pref("geo.provider.network.url", "");
1053+ // user_pref("geo.provider.network.logging.enabled", "");
1054+ // user_pref("geo.provider.use_gpsd", "");
10501055 // user_pref("network.protocol-handler.external.ms-windows-store", "");
10511056 // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", "");
10521057 // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", "");
@@ -1261,6 +1266,17 @@ user_pref("browser.ping-centre.telemetry", false);
12611266// 9003: disable What's New toolbar icon [FF69+]
12621267 // [-] https://bugzilla.mozilla.org/1724300
12631268user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
1269+ // FF127
1270+ // 2630: disable content analysis by DLP (Data Loss Prevention) agents - replaced by default_result
1271+ // [-] https://bugzilla.mozilla.org/1880314
1272+ user_pref("browser.contentanalysis.default_allow", false);
1273+ // 4511: enforce non-native widget theme
1274+ // Security: removes/reduces system API calls, e.g. win32k API [1]
1275+ // Fingerprinting: provides a uniform look and feel across platforms [2]
1276+ // [1] https://bugzilla.mozilla.org/1381938
1277+ // [2] https://bugzilla.mozilla.org/1411425
1278+ // [-] https://bugzilla.mozilla.org/1848899
1279+ user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true]
12641280// ***/
12651281
12661282/* END: internal custom pref to test for syntax errors ***/
0 commit comments