From 4b393b9b1220481bf544153893995ba2e4bff7d8 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 24 Nov 2021 01:09:10 +0000 Subject: [PATCH 001/203] start 95-alpha --- user.js | 88 ++++----------------------------------------------------- 1 file changed, 6 insertions(+), 82 deletions(-) diff --git a/user.js b/user.js index 2be91c2..639e164 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 23 November 2021 -* version 94 +* date: 24 November 2021 +* version 95-alpha * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -442,8 +442,7 @@ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is m * [NOTE] We also clear cache on exit (2811) ***/ user_pref("browser.cache.disk.enable", false); /* 1002: disable media cache from writing to disk in Private Browsing - * [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB - * [SETUP-WEB] ESR78: playback might break on subsequent loading (1650281) ***/ + * [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB ***/ user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); // [FF75+] user_pref("media.memory_cache_max_size", 65536); /* 1003: disable storing extra session data [SETUP-CHROME] @@ -1219,23 +1218,8 @@ user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] * string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks * [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/ user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] -/* 6050: prefsCleaner: reset previously active items removed from arkenfox in 79-91 ***/ - // user_pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", ""); - // user_pref("browser.send_pings.require_same_host", ""); - // user_pref("dom.allow_cut_copy", ""); - // user_pref("dom.vibrator.enabled", ""); - // user_pref("media.getusermedia.audiocapture.enabled", ""); - // user_pref("media.getusermedia.browser.enabled", ""); - // user_pref("media.getusermedia.screensharing.enabled", ""); - // user_pref("media.gmp-widevinecdm.visible", ""); - // user_pref("network.http.redirection-limit", ""); - // user_pref("privacy.partition.network_state", ""); - // user_pref("security.insecure_connection_icon.enabled", ""); // [DEFAULT: true FF70+] - // user_pref("security.mixed_content.block_active_content", ""); // [DEFAULT: true since at least FF60] - // user_pref("security.ssl.enable_ocsp_stapling", ""); // [DEFAULT: true FF26+] - // user_pref("webgl.disable-fail-if-major-performance-caveat", ""); // [DEFAULT: true FF86+] - // user_pref("webgl.enable-webgl2", ""); - // user_pref("webgl.min_capability_mode", ""); +/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF91+ ***/ + // placeholder /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); @@ -1404,7 +1388,7 @@ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", // user_pref("xpinstall.signatures.required", false); // enforced extension signing (Nightly/ESR) /*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED - Documentation denoted as [-]. Items deprecated in FF78 or earlier have been archived at [1] + Documentation denoted as [-]. Items deprecated prior to FF91 have been archived at [1] [1] https://github.com/arkenfox/user.js/issues/123 ***/ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!"); @@ -1420,65 +1404,5 @@ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is m // user_pref("layout.css.font-visibility.level", 1); // ***/ -/* ESR78.x still uses all the following prefs -// [NOTE] replace the * with a slash in the line above to re-enable them -// FF79 -// 0212: enforce fallback text encoding to match en-US - // When the content or server doesn't declare a charset the browser will - // fallback to the "Current locale" based on your application language - // [TEST] https://hsivonen.com/test/moz/check-charset.htm - // [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/20025 - // [-] https://bugzilla.mozilla.org/1603712 -user_pref("intl.charset.fallback.override", "windows-1252"); -// FF82 -// 0206: disable geographically specific results/search engines e.g. "browser.search.*.US" - // i.e. ignore all of Mozilla's various search engines in multiple locales - // [-] https://bugzilla.mozilla.org/1619926 -user_pref("browser.search.geoSpecificDefaults", false); -user_pref("browser.search.geoSpecificDefaults.url", ""); -// FF86 -// 1205: disable SSL Error Reporting - // [1] https://firefox-source-docs.mozilla.org/main/65.0/browser/base/sslerrorreport/preferences.html - // [-] https://bugzilla.mozilla.org/1681839 -user_pref("security.ssl.errorReporting.automatic", false); -user_pref("security.ssl.errorReporting.enabled", false); -user_pref("security.ssl.errorReporting.url", ""); -// 2653: disable hiding mime types (Options>General>Applications) not associated with a plugin - // [-] https://bugzilla.mozilla.org/1581678 -user_pref("browser.download.hide_plugins_without_extensions", false); -// FF87 -// 0105d: disable Activity Stream recent Highlights in the Library [FF57+] - // [-] https://bugzilla.mozilla.org/1689405 - // user_pref("browser.library.activity-stream.enabled", false); -// 8002: disable PointerEvents - // [1] https://developer.mozilla.org/docs/Web/API/PointerEvent - // [-] https://bugzilla.mozilla.org/1688105 - // user_pref("dom.w3c_pointer_events.enabled", false); -// FF89 -// 0309: disable sending Flash crash reports - // [-] https://bugzilla.mozilla.org/1682030 [underlying NPAPI code removed] -user_pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false); -// 0310: disable sending the URL of the website where a plugin crashed - // [-] https://bugzilla.mozilla.org/1682030 [underlying NPAPI code removed] -user_pref("dom.ipc.plugins.reportCrashURL", false); -// 1243: block unencrypted requests from Flash on encrypted pages to mitigate MitM attacks [FF59+] - // [1] https://bugzilla.mozilla.org/1190623 - // [-] https://bugzilla.mozilla.org/1682030 [underlying NPAPI code removed] -user_pref("security.mixed_content.block_object_subrequest", true); -// 1803: disable Flash plugin - // 0=deactivated, 1=ask, 2=enabled - // ESR52.x is the last branch to fully support NPAPI, FF52+ stable only supports Flash - // [NOTE] You can still override individual sites via site permissions - // [-] https://bugzilla.mozilla.org/1682030 [underlying NPAPI code removed] -user_pref("plugin.state.flash", 0); // [DEFAULT: 1] -// FF90 -// 0708: disable FTP [FF60+] - // [-] https://bugzilla.mozilla.org/1574475 - // user_pref("network.ftp.enabled", false); // [DEFAULT: false FF88+] -// 7001: enforce no offline cache storage (appCache) [FF71+] - // [-] https://bugzilla.mozilla.org/1694662 -user_pref("browser.cache.offline.storage.enable", false); // [DEFAULT: false FF84+] -// ***/ - /* END: internal custom pref to test for syntax errors ***/ user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!"); From 27977a16ad4a65c5e54e212c1d89dd111df039c6 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 25 Nov 2021 06:49:38 +0000 Subject: [PATCH 002/203] 2652: browser.download.alwaysOpenPanel FYI: https://bugzilla.mozilla.org/1738372 There is a small privacy issue with shoulder surfers, but in reality, this just needs to happen IMO - we already prompt where to save, but even if we didn't, we also know we clicked or initiated a download - unless it's a drive by or user-gesture trickery - which is why we prompt - the download icon is shown (if hidden) and the throbber/accent color go to work - users can always click the icon to show entries (and open folder etc) - this maintains the current behavior in FF94 --- user.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 639e164..8c3b0ae 100644 --- a/user.js +++ b/user.js @@ -790,7 +790,9 @@ user_pref("permissions.delegation.enabled", false); * [SETUP-CHROME] On Android this blocks longtapping and saving images * [SETTING] General>Downloads>Always ask you where to save files ***/ user_pref("browser.download.useDownloadDir", false); -/* 2652: disable adding downloads to the system's "recent documents" list ***/ +/* 2652: disable downloads panel opening on every download [FF96+] ***/ +user_pref("browser.download.alwaysOpenPanel", false); +/* 2653: disable adding downloads to the system's "recent documents" list ***/ user_pref("browser.download.manager.addToRecentDocs", false); /** EXTENSIONS ***/ From 47de4f520bdc7ec80f440f66731df15338e74a29 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 28 Nov 2021 09:01:39 +0000 Subject: [PATCH 003/203] tidy 5505 --- user.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 8c3b0ae..2a7387e 100644 --- a/user.js +++ b/user.js @@ -1181,9 +1181,10 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * [3] https://rh0dev.github.io/blog/2017/the-return-of-the-jit/ ***/ // user_pref("javascript.options.asmjs", false); /* 5505: disable Ion and baseline JIT to harden against JS exploits - * [NOTE] In FF75+, when **both** Ion and JIT are disabled, **and** the new - * hidden pref is enabled, then Ion can still be used by extensions (1599226) - * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=firefox+jit ***/ + * [NOTE] When both Ion and JIT are disabled, and trustedprincipals + * is enabled, then Ion can still be used by extensions (1599226) + * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=firefox+jit + * [2] https://microsoftedge.github.io/edgevr/posts/Super-Duper-Secure-Mode/ ***/ // user_pref("javascript.options.ion", false); // user_pref("javascript.options.baselinejit", false); // user_pref("javascript.options.jit_trustedprincipals", true); // [FF75+] [HIDDEN PREF] From c2ddfd60bfb486b5a7791bc899e2646c027a92d3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 28 Nov 2021 13:22:46 +0000 Subject: [PATCH 004/203] tidy 79-91 removed items --- scratchpad-scripts/arkenfox-clear-removed.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-clear-removed.js index bd99cb5..cc8d330 100644 --- a/scratchpad-scripts/arkenfox-clear-removed.js +++ b/scratchpad-scripts/arkenfox-clear-removed.js @@ -13,30 +13,29 @@ const aPREFS = [ /* removed in arkenfox user.js */ - /* 91 */ + /* 79-91 */ 'alerts.showFavicons', + 'browser.newtabpage.activity-stream.asrouter.providers.snippets', + 'browser.send_pings.require_same_host', + 'browser.urlbar.usepreloadedtopurls.enabled', 'dom.allow_cut_copy', 'dom.battery.enabled', + 'dom.IntersectionObserver.enabled', 'dom.storage.enabled', 'dom.vibrator.enabled', + 'extensions.screenshots.upload-disabled', 'general.warnOnAboutConfig', 'gfx.direct2d.disabled', 'layers.acceleration.disabled', 'media.getusermedia.audiocapture.enabled', 'media.getusermedia.browser.enabled', 'media.getusermedia.screensharing.enabled', - 'media.media-capabilities.enabled', - 'security.insecure_connection_icon.enabled', - 'security.mixed_content.block_active_content', - /* 79-90 */ - 'browser.newtabpage.activity-stream.asrouter.providers.snippets', - 'browser.send_pings.require_same_host', - 'browser.urlbar.usepreloadedtopurls.enabled', - 'dom.IntersectionObserver.enabled', - 'extensions.screenshots.upload-disabled', 'media.gmp-widevinecdm.visible', + 'media.media-capabilities.enabled', 'network.http.redirection-limit', 'privacy.partition.network_state', + 'security.insecure_connection_icon.enabled', + 'security.mixed_content.block_active_content', 'security.ssl.enable_ocsp_stapling', 'security.ssl3.dhe_rsa_aes_128_sha', 'security.ssl3.dhe_rsa_aes_256_sha', From 4dc53722573a2bcf0052acdebe41951e94f217a1 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 30 Nov 2021 13:29:19 +0000 Subject: [PATCH 005/203] 0603: network.predictor.enable-prefetch make active for Nighty users - see https://bugzilla.mozilla.org/show_bug.cgi?id=1506194 --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 2a7387e..5ca13db 100644 --- a/user.js +++ b/user.js @@ -285,7 +285,7 @@ user_pref("network.dns.disablePrefetch", true); // user_pref("network.dns.disablePrefetchFromHTTPS", true); // [DEFAULT: true] /* 0603: disable predictor / prefetching ***/ user_pref("network.predictor.enabled", false); - // user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false] +user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false] /* 0604: disable link-mouseover opening connection to linked server * [1] https://news.slashdot.org/story/15/08/14/2321202/how-to-quash-firefoxs-silent-requests ***/ user_pref("network.http.speculative-parallel-limit", 0); From cf0102f71ebe3db5287d913db818d6a814c4c96b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 2 Dec 2021 09:34:34 +0000 Subject: [PATCH 006/203] fixup: from being flogged to death by overseers thanks @dngray, also save some precious bytes .. polar bears know about scarce resources --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 5ca13db..af8b477 100644 --- a/user.js +++ b/user.js @@ -891,7 +891,7 @@ user_pref("network.cookie.thirdparty.nonsecureSessionOnly", true); // [FF58+] * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); /* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * sanitizingOnShutdown is all or nothing, it does not allow exceptions (1681701) + * These items do not use exceptions, it is all or nothing (1681701) * [NOTE] If "history" is true, downloads will also be cleared * [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) From d1d20b897a1c648dfdb5c34e86264f10cc84bc38 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 4 Dec 2021 09:36:09 +0000 Subject: [PATCH 007/203] wiki cleanup (#1289) --- wikipiki/concurrent01.png | Bin 32476 -> 0 bytes wikipiki/concurrent02.png | Bin 106194 -> 0 bytes wikipiki/concurrent03.png | Bin 28466 -> 0 bytes wikipiki/concurrent04.png | Bin 28727 -> 0 bytes wikipiki/profiles01.png | Bin 33003 -> 0 bytes wikipiki/profiles02.png | Bin 26989 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 wikipiki/concurrent01.png delete mode 100644 wikipiki/concurrent02.png delete mode 100644 wikipiki/concurrent03.png delete mode 100644 wikipiki/concurrent04.png delete mode 100644 wikipiki/profiles01.png delete mode 100644 wikipiki/profiles02.png diff --git a/wikipiki/concurrent01.png b/wikipiki/concurrent01.png deleted file mode 100644 index 60e0c4a33c9f493409c4bc1018d7066529936223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32476 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 diff --git a/wikipiki/concurrent02.png b/wikipiki/concurrent02.png deleted file mode 100644 index 3571614a7cb4d7264ccc8be04c9a37191ec805c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106194 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 z%0A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 diff --git a/wikipiki/concurrent03.png b/wikipiki/concurrent03.png deleted file mode 100644 index 9c97787d62f2f83ee7df5512a2d8a809277d02b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28466 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 T9)|r>62LR1=a4!D^YH%x4Mr=a diff --git a/wikipiki/concurrent04.png b/wikipiki/concurrent04.png deleted file mode 100644 index 04321dfa34845a4817769b8956ac3183b616e913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28727 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 JDP{8Y{{g;+Qtto& diff --git a/wikipiki/profiles01.png b/wikipiki/profiles01.png deleted file mode 100644 index c8ba7b287c39faa40038f6960e874fad5dec23e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33003 zcmW(+1yEhR5<d9F-R<J;?iY7=iaWFvEfjZ(ySuv;ErsIl4uw+eqAgzB9{<}pXEMn| zH_2x6?Iub?O&%SE1O)&9bVUUjEdYS|{PsgYux}|s%jaBg0kVsNp*sMe;{Nx;0NJ@j z0Dz+IAT6z-VejnW>~8Pu0#=lk2D`X9+d6!(0f5hIdD?b5+D8Opx4-{MDMtpSDm!c8 zgTPu+F+q4q^vqPqSW1ypML+R1`><tY;YmjeBjMuXgJSVDS<#|VR*|4o#qpsfk<sIi z+rB05m%DEFr(RlD#1Cq(@|tImdO>LE3Ot&8L1<M{6xds#BZI@+P<BW#3atx(1!}gY za(||Q0qz1sMOmnOk-Faow15f%dR23JImy1fVjfFn8N&pH!Ss402`Ynv@BoNUyi_>= zk%I}!%cR!^3gH3s2`kH8K!Xi1X9(P10D|)FvV38Hcd1nPFoj6~7}q9J2Cx?aYG?GK zWdQ?D0MAx=PzYFM12`4+Z54pVcA$3}3$+OVp#hwlk>N}Lyf0urN<;G*2+IQS<Sz9^ zFIeia4w&CKmDMELK`SI1{0_wCilnd4PQf^>NXUZ6ZvktO4Po#1&LZXx=EdB)ngoEt zB>cD0UOj)F#;Bj3=8tc~Fk?IJL42jQwA_8!o2hYu0Km3Kz}yQfM>9!~2x5@aOEKLk zyuB%E;iuae+a^p%D^Pf}rhnz~A8%xf5<7nW+=D__l?J8WS&ZxZzu5Jg_3A%=xDOD0 zy1m}&-k}ZVHVKx8zuW4c{HIbzHj|7TX8CJBLH?;7_4SE-fqGEUvcrHGZ&wq?HC`q= z_KLfVI!Y>;X^3wA)p}=>^$|{dlMiTg6o>ImVyiT<g1b>>z%uaY-MIyT%TDLMMMe-@ zkbUU(jMwX##It-M9S~%znCuDwrZTkbI^)d}BOm~fDGX+AlqCJvN5tBTNY;n&s}J?b zoIgy8cCcRxOA5t0h|JBLsWwE4F=DEboY|aX5kk(}t7#vR;)226ulo%{%mwqo0+ip! z*cFTnFF6XrwV+yygt3e^pos?&W`*BT^(nyP#L$ArBJnh-m6P}sxU`~mz`6?Lmtt<P zLSKyKz9)%{0^A`_5nb|JsliQ}VvA_4(jAooBw=#JsI%4{T-gZ(g*mfsEhJ*G{6z<| zHTIZm3F6WtoV|xcNIZidIN65>q`nHWBBxkQe5I~Ms~IL~)T@Q-jJmd(`RWCa6D-?{ z%n$D+1-77&R4`C6P+L`~1e4M7Vy__!Aj5@e_A^kYR4TX7f5*NbB(mh@`eLBKO0$fU zfXjj98!0^~K#LP4&CSq}2&?$DRA(M%UT*%Q7R?cBRSvHL2~En_n)Ul8B%xGRFw1B- zG!Hre<$;nysV?84<XJ*oOYgLI7`4V7m5BGS_IURYZ8EtfbxX3fHY$sBu=x^<r0R;= zv>G(ORO0e}$`+amB~Vl@t1C`hAh9R3zjbIh^!Sdwkw&4GF{?j6aU_43aR~R%3k^L2 zKXfG0j*&Qr2#Ls!*o&wkQ>C1EA%=KFhf{#-Pv$`uW|p(A0dpI(AAZs}N}5s{eHtk< zhfY;>dG+sVRNX7x37v#0Q*HlxIb9y@-74h8^cvmjJdHovq}p~>B9&jN?JAvhBuWDe zpQ8{B2UG^srAsvnznblK4TDjwh?_sNQoTp7iTD)EH%R|=>ZhM4b7$r=d1s7Rbybm& zG>;OGezVq9s;valZl>#9u7?`(0b@nRRY3G_yfda9Cem_Vl@2Z&<M-9+8R-T!3N@NF z@_&Bt*Pm46mH&|KG<*!kkQ`BBFlLaqOPEH;JJ9~Ay-|TuL7*xod|l68{l1K}s8hzP z=VQfbW`4J6P`-+D#c%H)2M=Wa9M3w>P7f8=@@NK#&1kfU>uA$NqC<SH&Z6WTBkLEM z(k25C=`xEni;V5Cq>ee!k|nt~Im}pxVdGueU8iBE;Szd8dMbKl)nnDuY%SG}a;9<- z6%mz@smZD0spTxb95JpH?t`3zoRyr-c5|c8Myzd>ZQpDZo1jMJhNo>^AH$7=49g63 zjZB*5>hkL7mOJY@E3hj%)Kb)H@|W!f8ZX+$+N#=#8~0Wb*X!Gy+Wal-ED7z}hw2AT zQ+}lQfA^1j7DGb+@)M(m+=x8Dy~PbrSWozO_H^#4g#XaL^dk;CgBh%uRi528+zF;Z zhdk|^1$jF{yAJoztH_ur<&X*X3~}}x(&3HKA5bNaYgdzPpZV*&oaUVVlgjmmQ~pzj z(=WdYCV2~(@(p?1X9q^5w>0<WBv1>|INxv92B=G`2ivtC&~R9BB<a_!G`5#{Ro_~i z5sKf4yA|w;?}`fi=KgJHHYw2CKH5H^KH!{h7QQJRNb_p_>hn4WR0Pq%*ug~wO9sD# zeZ2GWqw0y55MH;rY5I908C%#Pi7%NDQWvt<S4U+(`ZuwT>h>UWI%(PgBU~fkaCsKV zV&5WWAOMXa{7blgghaecqyfnsR|cQg+%IYOO_>LobeZ2dc3kR04Qxt$%;MGTj-qP< z-+8}F471xBPA(bb87O{GCKF<3uIK;wp?mY`<m$^#-VW-nFJUIfsELbr(RBa6@Ct$| zb{tmWbcjl%nqca=Bo=ceK`h-Rt`}WAig!PGza2Hl9RFP8s<bgPh1#V8v#L+>-=r=+ zZ`vWAGS<D0FovqcE){f@jU3^8f^1K)6StV~53bPUq(oP#YAV%~HoIfHeOu3oTAT2u zm!Xd_?Hm+oNMrAt6KfF+*-+Y~$`5sn7+08)n(S=!ZF{Do#)Z;r@>!-%CY#6C69sb5 z3SLie`f;|C+sY!8_1VY`_J7nm3N?wkdatAG;v=v`=pojMev58nc3M)eInmFk5BNdv zqxwGBv~N75uNCI~A5>kGy>S0OzgA96)D1WcH(M<pBJxPZ@uQ;a@zx15@B>#Fe|_E~ z{o*{{ll3dLrK)DI!+OSc-u7t!H(UNYjP&Y^{S1tc=s(w5&^Ps3POfic*Euq#7}q;P z+oU^6dPKi<*;I^8Pl-tAl<NG`dC=iMo!@A+Sh@Q+cS`Epb;J92Y5iT-?X&n;_qr~O zuIiHQlFg&yWAm*<eN^?)UHYSwNu8RL>&Xb*Jlr!94My8a$Kn$CyqJzw!ZOPrd5jUt z?w7nXFE(_3bltez;T;+m8E@#(E%N3q1-kH>XRL4SHqrv6C%GLthoe;XWwu<7cJ|{t z%Xi<^C&lNMkAM3-$*)sl=JJXfdMjP&j5(|wg)F4lUCzYjrRDhtu;2eOUoUR+J+PYI zbi{N%`;O(YJumwjb0E?sGHrbM&Ev9ZeGgavn|^kKu$j}b$Fb;3%7XexXKrV9eTVV; zj#Hl>t-iLmN2K`z(;NSOcwZ2_E-&Q^iEaG2@^QW$y1m{c*a&cAc%Gi<{OQGTTGyrC zW%dtpBKcE#<I9r7yO&?9XTJg+d%X&;=6=cFB8G>~yd+&GU`it-WF<^Qphx`47Zeu~ z+L3U3K6<K<p0S>x&nJ8-ewnBzB;W|RTl%vyJ(oFGlyRAn(&OY;_I%v?hqz&VxPO?U zd+ak0m+3#f$CEy<UtZ*AC7YP)P(N@W<E#Ds*K6(BipLb<l$2L^xXi03D;~D>H+>Uq zrJ$t>06ug85EKdk_pfi^5deJR1b}0601(au07B<vvmrSE@FY-_k<|IT_SfIn9DnHg zRjAoF1%Q!;)L}xgBP;I;3vbp7P(X3fWz4eGx<>ftFtQr&@v9=K&6R7kn7aX|IX!GY zP0C)vGR&SjU3flxJXoC%PT`QqNUGaYp&kiaTQASE-#Ix*w1f9V18<QxI%qz~6*@q> z5kGqR(aP8PzWa{*y6oU2G>=l62=qv5e9OhZJ|Lt&F4PX=?ufavv87PA8u>DC$HE10 z4g>@ITTx5iyR7OX<~eh<Li?i7*puE&ISZo&t}lc_YZV_BE8iJx5<<*!{+wDs5o57G zX3Miu5){8eXZ>CcZV~N1&$~(M1qWSv&FoHp^c}@6F68VfbfVVWY73|JZuPC&pBRrW zz6r-IS0NUAs7CDa-M2cR-^)fr=m<`W*kqXAp4x3$VfS?Q%geRM4Nu_aj2K3fkB?x_ z@SOcM@}V1dUvG`h>fO|*u9YTzES_$VeXOGiv+yjJXb_haG7&ja5jL^=B4bdJQ|Kk9 zt)I33fY5?SLe^Q=X;COTsVVVXhkM2QZr?s<QzHyEKtl92S3cjw^UU8pfbUk{SNx%= zbOy^lP!O-htKHvFwYAmk@2cQQya-~x81(F{OW<~H6Kr`N4@SBEhaEJfAIlSf-oI&e zRe8^uDRd%Z%ddWJh(G1CN~AM9fSe>*X?u<INN3>WmK{`x$ebiPKFCTst}@s(2cf+M zCeXopdr=_~Ts#1G3R!0U0aZw~nm}S!6fz7p_MR!cIoKB7+nYWiGAa`qpx&n18ueVx ziH*(Gcz}(?>5cYxEU)PTq;ecES{dd?!b1W2Bk{C}?WncME(6Fti=~KQVZoz7WT>z- z3L$tvZx8?r0Ym@@6im%S4Kg7``H9OI#_5R04gidpFd-1ENJb)<a5&JRpq4OJza$k9 zOdQr**gDyyW{V>Q@HF8xz*BRg0zYYG0Q0^}ys6ml=;G_l^)h{ZYP_57ddaX4{^i}{ zl?@-z=u-M<K2SW374->t{<Y^w`_;I!_k+^;)4w!?5CAYodJ@kdr0KwxA0{fYU6z0c zz)wzy=Kug-Bnm&NfacWcd8;)RhyM=q$Pd~i(be>Dt?Q+hqc>lnQs`3S*zMxwFY2_G zM>mpx-p}$H1B&0RY?mEvM+n;tyrid|Bxe|5K}n>`vhv|UN}ofJ`Vd0q&U@pQ6ob?3 zO)c#Ky(7$EEvZ7xRE$@ZWh+H0mv{Vt^C&|zCYx^YJVZ|qZ@wZsi%$$^*p{26xsl71 z$C*TnWl5com1(Ss4P;*gMTsg3%gA8(nno*dVxwG&QqRE2C)2}fL+F}t6|U)sCoShy zBMYQ4lOo}85^d=8gGR#86k-p9q<e$Fi?<;}K|u(BcRmd~FfKtHgp374E;-3aCk780 zf^{q8!A7x$n8Tn2!Gi%JNuUZ_b#jzdqvyTSmn6|?C4^hX)qzQ%fA%m@Q@>v6{;Uov z-q8nu6j-a^meQc8Okn}?aEftRHn>q%*5E5uj2}ydr{algv6^X@nOYR3$@%nnQpq&> z7!=&2vY*l=`LsgL4I|*D2!im_f~t|8sg#1?ds(3YKw)aeC4lvMRWNSD(eu0EOwsGN z_d%Z5hKXB$yYbqs%^VduA{xolm%WCLWXrIpN-#Bu>PbCXfiPnaNw~hkO~XNOxf*AJ zTd8KGl6BX4Bx*01;s6s5gK>sP6!9H3kWyiYm^pU$jmJ9-)NL$XibT&8EETUyEeF6# z(M`iUN2SuxN-BIz9*_&fDOp6Cl$ji)D1#z*hn194(S>mFREVnc#V}^MWsY5qDtkvV zNlE_o{u_)%!IM-W!_p(I+1z#U1oaPJ%?fQV2rA7jypxTgoK!iaLb)G|BwlsLQuJq7 z?VG)_p=O(*;w%Y8>&<7dAu&gkle1<LP@H##=NU(&D)jLjWHdm<f`uUim`0+4;3XSr zL8_;hQOUI2$-9J0pJ}MVm`nI{%qT3h<ohygtd+woE%?9)5eB3hE5l7NUxoF1nX=kd z^OBels&uN`mghuaVL=cuC-+4CYyr|Dt8-<3utP-ZWpNmvdf>0DGS<+1pLb9=S#UyX zY3QN%Bon+0UeGtsjR$8;a;>`w-`D4vTjLkYgRrWUm0A`;DUdvf3ab|zHXI9at`O^3 z8J~t_(LoVChc7gPk9IVZ!97<Jo=d}f-di;Q7K?_t^Lus!*cBQ>t_h%*MOfD;bnARz z^c~D6i6EP=NxifBRUBxigbce_XU--{ylb=$)!5`^LRMOyhAK)%{iI3m?^zBrK;g|l zNRl7S&r$I<W!}?N`rPlXWg4voLW97oM8+R@L&AW|=~5q?XfEqDFCt4i@;ZTF2vtsS ztdbXyyz>QOU5FPN6H<mJt<;z#9hZm=&kcNL3<IZ!Vj-lADDA?G@m*r0CS(QUWqc*s zD3#dPnun9Ygn+1yv>X)+Q72Rv%{YSJCaW~RtTIe<%rv5#W(G$q3&$emt#%BV;M!E0 zCG*`4IWt74ImqS5H+qvA>KWxSEuD98064Xn7V8Z=+JgNYB&E-qfCCG3ozH9pKA)L- zZv|pF`)c0C&p1^*{0Z!t^<6Vr{gFwlNQDD$9BLGo?1s*b1z}Em+v#P;)Zlu<$Amu& zYPnqQZ7f=R2k2t2L;8B(>vsj?v7|uTf=YFI)M~u~_9&mQ5x7fOtw7>Q+?5f+c9|T} zMx1?Q=t<s)7>wc@(Sw7Cbuy6=hBZZ(l-F!pwM9J_*)ox$fm=sZRd-Uy2BqRAy@N)~ z3_aJSv79iNnw+R5Y*l>+`N69+>VM?5{(!xa;c3gh1k20h>m+xjX1JNmD0^4wFdxxs zGtDSQ(bB@eh++n<(gcq(Mv9tqp72F@XSGt}ivCRGCjBd)pfF#814E>#gdYp<c!-nS zB_Qus%>m+SN>u@Z`>qr~eWNP*iPAbpR<Naa;DRn3Vj@r&jVNO3adNVK>L9(Y8daj$ z@*1F|syCq<8yP!1@&?Ei(F;bEwZTgfc??8ixEG?14Fl9UYq*7Y=CHPs12+v>%3O#Q zuIRSA8Hx6ATXZS8N<NQ{P~UwZQC$FdgP=Tu(i%e{*?TV!n?IEE0}S-IcYIe84}Nr5 z6?7b|%eTQm%IIJ|KZqO#?~~WP;{sP`rK&h~Aj51o&oKA+Zin;OPP)Ntolob5xrFV0 z6Q2=O`i3n93XaD*tkHH@)AF~?E_N44rS~__?T8tmHwogb;>v-B6ftq4F-9$|h|n52 zJgR!^46jgU!tP=tsK^AD()9Sw%c*ovTI=kXg)QEpoc8y)*q0N;u{atkW<}C2jZSF0 z*r`N2bm=gssr<+NG$lIidIc1`Rz?7e6S+4C1E4Dt4hhl{O~FC`@=?N?@3t&^v{}z% zK&h9Wx@_wW$Am+*88S!QCbbU=#==T0?bB7zl^thNP*JGl_i(CJAwgr^!)N0Ke`eKX zfxuE3B!j3M55DG(gXsZz*NElTAWa3nh_d5S*7Y?l_ApV_F{$yK@nxm`#ta;?2~43x zYHXX%B)IHUpXei4R2CA;NbQoQ^O%m4rBmh8nxD7#6y9eTuqaF&jQ}1H-?Bz6cubM{ zrn^%KzOi1x*6{M*z)PETmUfKHag5kJ`>sPL*4JX9F>%PDVmi#|rvC2I=>P;*+LrP3 zGl=@zW!AU&w|$_|6UIVzT>zomD@=B5Ql+u-EFj=#V)|&A$@5|Z;^yLcK&&!f?4!<f zj?N-MJZCWeC(bqpkGAzk`^6^84?ikxc3Yh;sR2>Tyk{<Sy79uTm(Nx2lOEiR{!C<C zOp|k~&E-1OTZU=oDw#<jO{MJDnzdGBDFl!ShAnkSfq_vVi5~O103*_cgtySr6%4I! zC{&5pN{G9`7h{c1QYR7zMZ!}TA^D`w!oWjdrR0J~2U)9RiM1CCmzXg*xj{fxUFFva za7(ueT1faYl1YL!imfF9c#3zPwr-J{>7iLDv^RG6kij8*PWx2p!p4CL7O=L&>m!SL z`URqjgyV^OZK9SN!YYuFN{9EpGL}d|_onbRt!~p(=Z8U|2J~}GwLta!!-d-+oGmm! z^BAA_#J@8@TEvn$ONRy)2G9zc7geeK$4xKU?Xl|(^%kGG>j7rd2=U?*t5aynI-(-u z%Slyv3^LdRm+c3#;B!Xdy+@~q5DCNL;Iha*OKFE^(j#YO<GI9Ak933kw(f)pvv73_ z87x4fErUdQWGLm;Pnh5G=Pd&*nf(|h!>WgT=B1GP$W$7Us?)ij8!dvU-9!_}X0F0Q zr9ic5#g$kfK#CY9D>8A^mFyCf1XJb+#w12$F8N9&o%uSdik?02lB(qbXXBnG_s-JO zgS-i8@9!sb>NNbf6P_{5+3cniT%t?5xD(p8s<@$&oCUF^!UD2-u}3L*nrX$$`nY%+ zOO|+L58TL*`^NF2U%bXs+6!wL9s3t((qY9(aq>0jE&fHeZc);6^?KAR;yShXnW(44 zaX&J=e@1q|qb<Fb8RwQ#MJs|D4~)8)QZ+Hi`JH7WBs>|PQutr1KM?vHwAxi)w-}Ye zQ*%ekDV}B969tJnlyDiy-IlTxWa*@lJ=26?S$f?!3_tBOJjltv`Wz{qC1l>6<M)_e z<eh%{qwvm5@E}5-XjuH;FNBRhnJ&>>w_(4=$;>c*UN3V5eja&+0b-wrPzgQYhS@mc zGY5M<Z})%9`gOvYXCrviM3(ncH>^KC(eCN03_IoiKppLbc|xb|hjTwA(qzXAR61l% z0qD(dJ7<(~(TIU4S)Vs(nRIV4^!Uh|)Ni&n59hl?N<1S|iKCE=O!mGSJ*WJf;WoZI zK{dS_KqXXp*fTs?e)SyQe0+w^&$k)fW$Y_ady0;HGNGr&#En;G$M%*1#q02rS(@Mc zgOZi}#K$HK^GJY?jV_-Dv6kk+YJhYWmex?}SsfT7i6hBn0%sNK<P=eexF3!@@A<I- zdh=knha3=jpOzFHOfLqtH#i7;2^aftqHZz>Emmq&$ffLv^A2~r5RH9p1L7#j=)@;A z<2hEvcCD7Qy!#|iFlm6mLF9OXPF<|p%lAEwXoT;@ICyOtef9awNjHc8`A<Wjl#VAc zVK4R;&<T+WiaBIP<@)Xu@GFD#2LCpqpPi47@1@o8<?1Z&kHkNu*orDzghW_cL`--X zA9yCLHB(@<yYhH*y%ddH6F*G`chUmY<^i7(zF(mHX@6K-1XYF#K6;+ev_nvZm^ig; zO4->DT3e<5`*(xY;CRdnE4Ou1FtI#bpdsS#%U@m$qE8YF`F{0gT+ZI7orHdm(Plq* zRRZewcq=zc8|z6gvET>tU};jrKK!+z7c0W<f(h!!j!)GKOWfEK3@!|vyd0QvoOH|} z9+7n5lar4Y1p%~JMX%p}uH?=JzqTG{XQh~Ro)l5Zk6A!s84oPd2B{9Dqlhoe0w0E& z8BBO~kw&}#LEl~our*VrPv$uB140!RdWgI&7@wl#-H+W5qvFt+<D&6dt8_cj*)-B6 z?pFLSS)qLPw*Fp0B`XP$0R?n1u0$k@7$jB{k80+9ec-<YPX-4n`s<1YhQeK*j0TNH zhQ)$FG9fVG;2B)lC{6odv+17Edm5W+SwQASR1OOqNt}ov2+dIjl7R5bQq6fxRHkVK z?XS5<DV}7nSG|)`>Sv7Z`0!}7IczqQM0`qy-)J82%7ub7Af|(iGT^zzWopMLL?GNF zn;HwUwuFF<{Pa^52$CT8l=8O7cntLR<<3f7`u#ew&alCoHzx9@8Pm^IZn@B!SWZrs zmx56-(a^!gLA3mk60JbRMiw_R{#=@})SXk<=Qnq0$Y3Rx+ktCdbeeD3wk_Gykr^u0 z$;dhFJoDbZgz@XSK!w<S%F7TaXoJJY^C!#ZQ9O~`tW2N}(eAMgsAKrCj+<Nz+kZr@ zXkT~fzIF(*Trr`Z?K9=)rGchCqsa1ISg~>%%1bk^`OM%)&g^-To{j^^95ozI<R1oN zyxF?mX(G|ZA$=qnH*KiPWYka)GGtUoz!OJ5s&Kl&!gbgru~FCUmxsu9|53HKG&_mE zyQ}K((sPT{fr*;C9i^9@ePH~0BTk!K&jy*KNEu<>bb!6d)G8&*R1juV;=j!#7EQ>E z6g}dBa(QogZ(&y`L_b2k*B-S@P1nwnh|8Rlmu2S`POkAZh245QP;XoGVZVN;5T#9% z;huaACiOC3k0$C55z^uRQ7;7#oe7o7mM{A^DK(&J1j2(21Mq@CjF3u7yuLQp$BKc6 zRIfw+$NYCGW7gbRxgHB19b9j**SVtg0t^vJ0ys9`N}rHya&IA-;QqO8?L=D}n3W9N zP)XQ`lva=Pbk*92$C;iU%k#5}o00Ya&#{^jQ@AV2m)%SxeG`!K7ZU;X-`^kHpF+_% zFS@==XLjGE=jQ}?9ytXjE#(RA3TUfw{O<ZEvisutn9_cG*5W=jdA9NMahs6i7(2<{ zk4@{j`TfBczvZp`yfS@#hzu;u)(^r6HJ?<Nt?G`3fC>@dug`&9#_wypPh;zWzUwP7 zFy<?31%ZLzf8Q@`s+{Vhq2-u;-;zfq2Bz<hoat}>fZmxt-Naoj)jjRpqke}CelxJX z9dUS4j_1@afz<(L`ueX=4FHfa<#U{CWq<p<1K0Ky9RSpFcn{<mD4IH-w*S1&?`nNM zzI8TpTN&6CHUdF=8)-F=Ji-0>fue4IUO&CEi#B^q4W&?$p*1ArT*n@V#(ea3>D4TF zx{z<qw+kvz{akeREvM(A{b!)qb3BVWR`g;R))Ib9g@obT`WlJva<tD7ea?dvm|p8d zVjZGv2djglEhkswXT!X{e{}rJEgzE9vdfL^kf2G=cr+YBCYaAXhD_57sgty3dsIL& z0mI5Oy6RTx!%Kmg)Ci<L!^itcL>e@AWHZk3CIGPz3RLVnVqB&bOmbH0h7bxEkXaSg zD@$FhW$lTn3K|&fVnT1uYx&7<j(!%~@V&*_mzmkapP4fH?&U{GhS+7X;WU@V_Bjk< zQDiW}9~6ctM+0>P9y6pF&t^X@Z%C+>X#t$~6+MC$XAA<HJ~OqQfoMSU>B|MQ;AN*) zEa$o<`@tCXDCY|h#QlqA2wb|Nl^@d|rR!$Q`GmkX1>d&R^IOaj9sr(tI`i|5nPYKZ z1p}WaH`xn}y8fI=bV4b;o&t1VErX`s7FatJx<_N`ht=&)K4bW@ajJ2#)6w4dZ)ie| z4RN)@c7K#o{PDbLd*HzMYW6zt*V8(CPiKnVlkI0rv|F(J4_|Cg|4T$NFW0XZxp1OQ zSo=TDwG!Akas`f#+NZPq9G6fxd*0^dX1<CX#`A~R)i|Z7*DED^2qAmUv=^K4at{q; zDciUHY5VGyja1{lnbPT-|6KEP%-)`7UB|)jwHNE>qCojAHjaRUazb^#eUS}6cM2qJ z<nj@!z^6+-iL>h~1_n>vfR<Ok>xZ9W6%t%UsP0Rh?hIo0zx{W=!}hMLJAHrY9;rV9 zGh7p^?%`V8jyTsI-A-+j2N9W1@#F;lyE01<EB*d7x1LYz`lqW;9`>A}hJMQLUt^XP z;^Yr>`bp?JN+K6pzn6p_ruE=}D)Hxu4Rs2h?HlYbbSWYdMn0PbZN>u7N_Y~f8aznL z+RkGvqqD!ITJst6LI|GNs!I{Z6az^cCl3~5WCD;r2XQ2FhgucGld}0WdA!%P^{R@k z%#*6Ylv;|1#d=d7;Vn}I`YY*&JV3ZO-t%f`AV!bDAT-n20ZRYJ7=9g^$E){2Qd83R z+6wbnC4A)b-H-@EG@0jV6;*}h@*}1^89^{P-vO?~RUClvJ(JO8o#3IH2lgk73%oM1 zlv~{5+T^zd@z&R@rv<ao6I{nvcfAvS7ZZ2PmiIMrosh8j8%&(7Z(;M!t4qg3^eAC2 zRtNDLXyQ%Bo39=Ib5j)*%;7YvP8jDf3-uyDh|E{Y_W~m%Uhe1nUS7yWI&vC3olOM_ z8gkqn-`q>^ZabmEWbK|4=M-;eiT$Ma%2UwH_g$|F{G7VA``b4;6O9)rC(*bQLUHtQ z=t#iz`kC;?Jm@2XNnFB*nw_0n%DtNX{59-1!@$k!Z+o)W)BO}zaWf(LQ)qDjO+!EB zkM_L~3kh%7fPniZH4gMY7=VaC!vjy(#lalm;qj~49{b@k*R#k+1MZ;h%p&zEpZjF9 zI)9h`G1=bp8B7AM^OFpTB6Y@}{u^AAvw`!s>VL6RD2{$cw^M%eMgxG@uInQ4FTh{K zpayj!S3jgn&%mdZ_Q!Zq*Rb4n;ik<cv%vi+r_KbC-@LkC_UkiWTkq)*^F^L*{4WM> z(1fZ-bJ<fuLbLf8BtVizI$}4QuxRwCY5&TeZTu)Fc;DMFmZ}nUr~F;dY`vE|M7EIA z*`{dXE*eBh>_h-iber)kGHrNMoCENWC&Fm4vi$6b<-zX>tzlg>M(-heb1`7vjXR#7 zg{l;54hDBG+-?yYULXId@?6TOI)3<!+Vnyn4x6Ea7DDwm=mrz5qY{CVdqK-8Ampdc z4{`>owbn5fVR$VH*l(~{eX<a1LI{8Y!_H0pZ4}tDPkQ>WDjwO+;<Su#IQtRo#~;~N zgOm(W!@~&yRKBJ_6u!pN52U8v0K{NfFwpx+wzDmMG=^5tJjH(0O8!m_6y0|HkCh5! zTiR>JPBz7ePkoiPZZoY(<c?4F>F9dM>Qn7*m4vs=kh-5b(q>lux}yH}x1m7FbKD_A zt}DF{f`ggCC}dG~$<y7AVFcIDW4{7TTwYwnt;Tm(fZo?%FF836pU_NEwH8*Z<1xMd zlC712g0j3`|1@a$%u)3Y`u+39%ojRXn+QbQEVzfd!n^#e9hnhYOHeTX{X<#a;g2`X z=6b{CCyCC7yBp@@1*@aT18m%2Z2sw&r*GWq3Xd=j*D^VpAYi;c=XZlUbCycER@K^? zHFw%S1tGzjEtR9|3bJs)y|PrgaMc)L!~pffPSPUmEs{GQ`vO8)#Y-8rl?vD|c6DCh zh#gW5!;Mz?f*YRX?Q|(a{!ox>YKk$f2Egh4H)wWP{{{pP2GLqlg^h$cDon(ns$<$( zT0$&oto5Ub4iyo;q(X~HI5b8Td`7T=EiQ+iKrwVX#O&<+xZ!sVxd~}kN!g*8pm1p( zx_v4%F@$jGwe~W8@->f_?AtvGAoarzET|7zeq4|dUhzf~Q31pIFKG&OkX!&UkgB#h zuf(W;MGYqiF9RDl6SYvDxaJ{P>i=$;yHn`xJUqwL^yHIUAl+zOsNx05{B_1lOU=7D zU`puf2$h;$=-g22Mxo5U`%6zvUG4W+h2;HrY$K9i!t3OT3sXFR;n($6j!0CL=;gnv zeBOO7>>4NP{ZqSNuFIqg-LL(&=}F=uo7opq;olQkD@{Ii=5dlx=A8evrBCP@Z_hUx zwR-UQ<JoWT_xHh0AVq#M%~|4^C_$*Grpt7tXy$pp?e#Weh2Pr*DgR>SD518B)-dml z<9PAn+h6WhR`}0S<6qvre2wf0{597Unc=u;_k_E^F|e8DEcX5O_F`<T;luT4$s1lD zDS9bdCH^`8piGpUack_O%GeL4=bT{1v`ek3HZzgdv+qcRJv|FoqBD<ob@H1+Wv|%b z6lK;}!Eb;r8uwN*(W<id7fN^b`p@Ta>bi~X9=&$nJi><X_nL-K@2b?14}x@Z71c?G zLW@>d-}c`5{$wCK!k&tlp(VZN^bkfvfgOIn1NJq9Veg-^v{dGknKu;``@~Irgf9@h zY0tvO;C_<+4Hj4b+AgZUmXIZ83wy56LB@#70dRdD%;&#KZp**>aEjFABaAqt-B-tr zm!n#tq33ByK8|Coq>5$_r->CcE?Mi$sf+zB<DS6BTqWmJtnJ@w;7R?dU;o$%hD1~0 zAy#{1V__p_kF-U=BZl{h@VD?2-0<+In=jDTv#qwXEdqjlLIQde)D6$@sD97?fBiC@ z{W2C7#c!odEKDsdOp6|P8X9NWSXDd(X&auYK0Zocu6Zfowau`I{ujR|Un6XBK5KI} z)6iKwJ*N>VaJiId5A=MxU|`mkNFl!3eZZ>`%l7~p6AMhhw%}wG$3^foAX^dN?cST_ zWn7FG&r>eJf8P=>x#)3g5p(+6<^B_)cy)s5s@1_d54{-o%}d62!all^inz|54(}P0 z)qw;aG^i{0E>}n8X5Gwl_3b(G0h^A`RLgxkr!!X?()D-G=V|AP4@94KIp5S@ik?Om zIKM}M_PW=;1ddD&_57}L5fkqfk)FHlT7fqJeEhNC^c_5>&!s>^E}zk9h_gz*#Kj-- zz8Ss+o5Kd@dzYtHn!UM&08wW@Li(KqvmbuPDQJMpn(A%5NcLUjI>+;diFU(hqjXa5 zk*>ZIIs`|KKz!(wxVp=h+3pyl>kLhh=g5o8e7L|biEAIjg?8uf?fN3>vauDkaB!U7 zw02sNQNn?{-}@RSef@@OjtRO2w!cX;?s+rKC@Z?9s7RZRD`R^@O1t9Gk!;A5vEAah zQXs^e4*0K?PXt5?*)p(Js)>y;FstevxKRaKZ3aT(Hm688S67URIzDg{m8ys{S5Nn! zw!cJXnQAi<AzQo9^AvlmrfsjG3DawN&;6-Yj#UxPHb#jr|FDBSvB>|yXNVItg4~p4 z&iQAi`?28S-C+q--K;6Aa#|s<BoCnsL9A8|!T9RoeFHj)z){h=k7Pb`vSRTPdyyfc z3QI~+a`e8g@W^SmvLxZHaMrYo#6*)izFT&%TG(~9#4{=C3PYZ7-@HW}9XDUk2Qu;l zZz9YjZf^PZxD;h`pW4=6IzG+q92l>-l8<~cUin0J6i5}edklgXGGT6vFU9<HkcoD% zJ(0M=W=Rp_ejYaiPndJSeGHJHkcTy1mP?#qU9be3A15(dms-&Dg<uo+VvT3-F=U+Q zg%0oxQnf=5@ye?jgH)u0$>N6<yz^;s@b^+x=u@h!oA}dIPHO5@>EE32pxtZ!t^d)O z4!2>B$};_X?W)oPMdCOWE;?~(tS?<z()TDWWYZRu2*g5#ff^$lAnZ%%tWT3)4nnd= zV+tY(9~DY>Ng_w>A5q=IN;2FgH#{FsnqnHAZzYqx2vV37R4NIGS-B85csK<Um1#a^ zzLA;SAP`6`(Ny_BC()H6pk9#5@0R$Jq}9%w&kK`wJ*a7mk&+rsg`aF1WwZ$0=Ig%I zch3_q#~y)$XUmCYw)LJ$m_3{d+^G9*%z(xc{^D?IINe&b!fjsVHH!@_n=yf_B)wJ4 z_bY97ibq)jzwi6L<VZZ9VYs82x-X5Ij@;<s#2qAk4E<tyZnK5gXg*>gBRSfy;9*BU z7#v$=L$p(gT=EzDj5&7B?Q2nbaFPUnWb~9^uYyXUB5m*)^Opq8Oi#aw7;)P$Sk8M< z97ZH8+gz|^&ZqCJH*vJI&-PQlupI=*;2GgBP=I81(F7e{n>Q;#c{0o{?fbWjHgj67 zs!x^9xN;ezEVFxo(u=jvfXnCQC?Vmvso@d8CYlk$A8(I%oB%5<j58<^=ImIxKD1Fc zwzB0$=_o=cGUZJ%H5Y_0M$t+BNtX#CJEAMZS%jwurC`DoqL$hQ#_nkV3EF5$FqU`p z$J7!rMeamzj6G+p%8IS9k#2i9)&*k#Cx|B2yt6k@WyD~dQ_qZjG2V=}BcfGhKW9XT zHI(VzB5aRNB%sUbon#Kbbj9zK^d9i2lD%+N_=0e_HR)y&8g|)L?oBqbQ1{?Yo!867 zQ6Mwbj!bCKJkccDn9jI<;V4}OnK~A>Q2Z`39xa&;`@putl*TvL52j!4$n<lmev6oZ zm6UCEbC|7c(p%v3$&%2sN;YjJ45o9vc*95~Y9p;#TaQxqQ3ZjmW<>k@a6cvPGD4xs zMZ@mD1Er!7acF!Wgx$+NF_1Vo0a{9&7s+p}D%1VPUhX~bx78f|(eeHJ_bH0%;hxG= z5iRT$(yiPYXx5V{@xk)2a#~A;7{>?;Y_q8eP_S&8gjD&El><SN`x0m}(UL&H_PJkw zJCb-7`(-h$t*#gV)E_3W5<%j$Qh}}E8duvg^Gp;P;rS)G+LuA473qO&|HM=cE7m1> zhdX2AZ~}heDx^!(H6feCYuXhjM!}R>(n;mxtsVbCQejg5be?g~4i0E>Sdh=*M_A^Y z-HCNu(Lpu?%4ozG|ByGMtZ7ps;~f@bF_KXkkEjZ&NeLq3)h9~Y_alE4`bTFi(V#{P zG6}Fvm7zLtjlA)}tTAlv>Ne{lH0pdZgzRdM3A$(7Y)uwpKTn1^_&zNL4xu{YEr zjz-O7CrEAdl_Z7fKqGOVXLMZw0*Qbv8^UpLz6k9ye1}h!$mDMr5w{r-p>d;nW?l}1 z4xg(~9--j_*@QJWY9WHGEokR6v=&(_y<{jY(WhvAQ!G!eN<An`ZXHWSyGb*aMs&_@ zPM-W~hBBRaBP~yI_}8P`36IMq8JR9uk6reyJf%icY!f>w{!S^mBT;Z^7Vmji(qytF zpJ|ffH16294^*@(HTIU0Sd#{!@)RhWX=zER5Sr(x)OT^VDlpu6_}pI;g~^fT@`Mw@ zV#BnE8+9T~%OZ~q8PaOC7`@efVehoJq~N0no->JfbA3XH5NHgIu<Y>R?Lv1%nUX;= z+m%FUpXvcBYpp)8Gopf>nLJ3oFy>I<MAvpbRV{%mDYN%hd{4pATl+y1C+>*|M<kzt z><gK?U_65;l?Es+POdP?4s8;?@*>KixFy&Dc_4UqC_NKLn1I7`?n~nqPUWXbi(8ES zL|y6q81C4@(gU?8GL8t6(haCTDSD8E#ffup0c-9PZ*F$JUzUPaQWp_1@o=9;7X&wj zOxQJmCE%m3qB=!YN9UVG@lq>aUMnz}J}32nPFwL(;YF>ggM+&w0GxWBy30tP0)qh~ z#r-WY>ox?-Cy$nyjH+VuWBSYEAez)6NFnV26QOD3(sz=%5B>eCOTn+%0^al^-?Vx# z0>w6?9(7hfGD4vThHX}*2D*f~R+d6p3f}{F3?#vDl-4AOwqh;ZS?4-ScK;j7&TeU$ zoK}t-q0T**^}dEo5jwKcOA5P?8Y7QqV!a5o1sh)L{_1zP>gX$&DnvtZ=b9UiIx!sE zy8EZODdn>QKKVN^8TmTSvjWj{R5>25kJVE+I_;bbca}_1m~=uImQ?91_WTPAA3c+h zg`mop$q$}rNqorE)CiCD%em<{FbkJ<t~Z&^ujm+$r4J4tX@Y6{q7iLV!C%iriVqec z>JwFA+{{iD705&CSVP_5K?-k4QwwgV9y!;vJatr2xpHEg(F<)X+{b$elcS`R`7)O( z^O{l$A@)~>gB03|N?rpuMAPZK6oyaq)HkCv9Fh1S22{1j3@YV)%-F9n7S`+<K2$jk z)N(wD_jA(SyYI|p&;LE8-;7v+i>~DFzGoM-rs!t7!$fW!?BFn)sYHtrHvwzE&?5U? zVTnUpzanKuk!_FLQPE;odblZNVKX;G#=h#kK(uT%F}T70NuQE67B3E|M>+r6x#(7v zd~&qdvnx>*UBf}pMAjUhL(r77P>z{h{zzwqlII)w{NeA`$a4|IV^Nu2!nQi0_+I*F zVg<OXU+r@%+aeA+ggXrf7FhvAC5ji{W)RA4s;u3`)j+H$mHe?CSr$iTeu}z0$9vU- zHZEG|@4GSSo6yMS(y!An;T0-^siR6lu}G-Mcef>V1Vy!IM!ZR+`8bX`#%9c!ww5=U zPg#!YbxB(l6)*!mk?0hc2fjh0+G_M#PN;5ZG>^muA%%R46!yaX8V`Rz4?^j*q25f? zdc`q>-<Vyuj!Huo$8M)=M(dAlmp;<GJ!+r>H&TkxiWp}G_?UmQrN+etVb7CtowMo1 z)^Ml3Z%}h*&c;UYnO_TELt1V3$5BACcYsUBLCRJ<DkGj30BC4RuoyQy$wn?b7R9-c zJ&6nojXWjkcP=a5N7~G@ro}5TMn#9ah0DOE-z$ah!mEX3zb~z&$Ey?cX)@your~Pk z)8G!hrKi{>?5`bKdX^-Oq^nCkzjIExRnaajxiqFWhehW5Ox3RgGnJ$!%t8K3irv9m zU|%S5@Zp#uSJ5RWD*67O9%?c}q6n%tpMtBdFKHw+W4JQ(=ab<mA%4(ITZ(-b4IK|A z`~pFba;Jg7RXZ&B^A@lbqv*Jh8C{0tr`Rk-b{+t4@+4_FbJQwtif8m2gNgOOc@`*( zLGRzHQHXlpsQ5t;<y~zZkxXzX+yr!m(c7$QtI4qg9OIYHlvQi|Kv6xMGLvCVWCN|n z<oc<;GdSYW-}lYK&fzQa8o|fXBmVhzAn0G-1))`65CvnG91br0Flf_BFN^EvYjoAW zqUg#jo1LCskQB7Y;~ZhT##G9Nd^wBVP&1xa`!n|%q<jUNQ7k!%I2Z!b8|<qkFad;8 zSf(1d<r5?{zeqv}aIlLLUnH6LI4e{CQoSA}&a+Zihfbpv=0(Q}Q7?`4GoXS(>|3H> z{4Ewdmf?AMkTR`AN@-jdWyqBlaH2kGEvr_ABo|OhUfCpqscXmYw4cdLIXGK%loY;3 zH_Co*MWAU`Cd)%xVKVBswT@T1H@ZNcWWsur`iuq`bmz#NILQ;l`mMAniz*OT)y6dx z&0es$BJsrcBz4m@zIZ{bTitZH84i{j+F4mcQ}V@eWg-JR0DI0gR(2>Ay7%>F3^iS0 ztM`iGkN`!ILefPwF`RyolMIDKQbjr2(e`=<dQ-TQIhz5oVa1{uk9Fb}i9@kCC#F$Q z9+XmjnPBaEkgj7h7v`w+>4T;=8#OC%;W@rbG}pNpb)+|?V_QkeNH&8u36)+x-PyX) z;`LL_OHW^gxj<`+oQcv?C2K|DY>a&Rvahj%`e;1EIP=*a9p0@*8gat5rdd;^%2|;} zKOui0$Dm3TNSwi;ZEh!3#(2;}O87Zfv&0#;5O$b}My_9D$tq|mbInFWWcBD$Vn$(Z zEqL&^d9Bp}SGRqBv!wF0-;n%$;k4zpjLuwI<}SmK&~!D~rS0x{_oyP7;svD|0#2=N zZ;?*kz8B17Zbr5?Q|Tr#kMMr)HHRdb3l|a#PpPj^<_zq>dpfB^tD!??l+GvHf9{ie zb7eM~Q&8RD4*^6laVNbLcB~6!6}eKUBS)8-r4*p<fwem_or1P`s_c$gDfjt49aC#D z6)W|v5X*81N*9uU+;l7s%HF#RiDmn84cOQ_aca4A1paiBkVtnFIVb9FWsWf0qS@S6 zPO^EANxMVl`QqJ2KE!)6&SZ`ZE?X1WUyn9Z1)BzN4ra`<yl#15@1>^Z8KdWi_X!dg zoeKOxL=M?JWvf>4ffeosEL1H46i_X3C)M502gl!$IRpN3$;lb2I4?T4US$5G{-lp% z5<wm}7>U*FVZR~1mPNoY<5bS{XQ3w4zE`IZ9H|zWOTy3apzI~96$x3*z_OZeaxH%x z{+mEovBJAs#A<ffvNXJKN2BeOSzl@ymh|N37NEzk!9>F3LWeG-LBx@Y#ptdk!stQ5 zCWDrv(A-s@VeGfvD;fIwZ#X+ra7T*KACXhqVx9l3^N*@$J#YkXbS?Snj3(rKs9_s# zFa2?CB!=hviIIVU0TjUCASqe?$9+)F*7p|Y4Y9<VlZg$jrzgS)pM6U(;Ei^ZI%<$n zaDokD<@)(wT^+D}oTM>{gK*acwvBHDn&3X-OiuZutKcMW_*OtF{$dvkjvG0)PtsE0 zJ$74TqdojgB^%v0BIIX5kX1ar!5hrdXkSQBRz^S!B{1Zf?C<X{9$Q5$9wU@uLHU29 zsYd<Lsif(ywf0sP7IQ>*OcPQ%G+^ppgW%z}yir6WcFDa&zd&UULt({0C`DyZG!h~{ zx=$hXfwnt~Z=vRa30dRt!S8|&@rLxDyKIdOBr8*FHyh$xj;X|dQoH>OP7g(_RMQ6k z>?#*pKmE~dNZ=UT){Hggb#&ELv%!2Ct=eVJuD%fZrBnax-HWK9OeAK@V`Of2a<)<; zJHd5?yD~0^J8m9^<mTDwd=`2qM79{$-q<h_utUPD&xOtr>rklJ!_PvGhn~%8p`ke! zhObncme~lar@~0m0a{i&s*sTDn=5P)#(R#;#z(jwU6?-}`yHFvV|BI@j6@Ir-C`py z!Pw(%bds308aDK`py(V*o86~TRpQ%%ZK>^jo7oRj>kHTLdpt{I$t3eW?+S>Y_6kz9 z!yVKa_OUC@ICHqDq|Iy&)3=5x6`bww5I{Z1EYxDljb86esUA_Yj)HB^Qj9-BfiYg9 zX>a-{dh2XWV)s8L_iIeg+#B0#m%p!Ss`u0TqLH7|V-rc1Ei<nnW5240N(#?n`Lw<p za}{l-ipSJcztQp}Bc;$`aCGuT1IH=P-V1)CWxs;Khv-6<(-qm8{q(f^Yn>^!m>LFO z9_Id5o9;gJf&YpTBp8XjW!BKs-=!f$2x`@~?R$Dl9x5S-V<myRidzGK@%?dnR*F{p zWjOq#9PZzDXoM&N9APd~-@86cW)pMT#FC_6@JSol9HFxiOL#99+hi-Jvyt$5`zhAr zmwV|v(4<er1bSERPfyM2f8D@oaTI4Y#0#uL<AAh`9AAI@V%G7O!`g3xg@Op05p$A4 zwh4u^NVRAc*G{A~D%ZxeCeCYa>DIwrwVyw2Jd1Q!1^{OM^hZBlx4AX+?b~`wE1_5t zz5Sl{%g;Z54RJQv)3Rc$7|nN{6{9(S^b<48Nh;&NLS#sT0aDRP5%x$~j=ePv2c9nI zsu6!|)~X^?&=A@*d)RhqwCxWq){^e(Cx6}lrNOVlGZk&K$3vgC)GpOrvP0o|lfiIX zq4)Kx@!5aF)X8hmPN%5Z?92<`ee5`53;Z;;rkSD|st)(oecHLvAslK4Y6Ckfn_oS+ z>m_)b{K;<0!#$?De3ZkyIx=ViC0|?l=8VS_3|M<!{4uSk@JT0fpxibowy85dg~dC; zhI^XR_SN#gWH{8V%qmpG(tmiz3HfmT7!wu~h9yxB|MFztU#zxJQmRi0vc6p{nP}M; zdY|+}RG-O-L!i$Vk;L_^$Nh56$MYa3v3YU5xDk7|cI^KCC%e(@dZ$GlFS%aVcWb8< zQ^xN7R%O$)wov_yT5`TxR_!UeACJfCf1_<;nr{0#Xw1i+Z#iIwc;f0g|7kS!h+g|> z1v7KM*Az1iYN4n(=-lWnv3<QkCtRm=cGJ#r=#Bk!sYvfxS5_|l^A{fvxP-0Z!)Z40 z9!*U28$GZQf3^KctRu>4Z+#!DXrsZ;RJ{BC%C?8epFV*DhLMziyd9x@MO&YzxRvjG zxyh6lDHzh`Fc~54@9#uw>FzWeZs~{^)a}n7t9e_yIKP^$JgiR9s&HzISOQia0F;K+ zPn+#EXTv-6Gy9%M0tOv8)DMeB1ek6V+4Rtf;ArHAOj!aR#D9z&-+mPMSE&e&c|5el z)q|eX3lvboKKA{5`J0lmX?s<!di&&<Z`=q1*t@r$&ir35Rrmh<eJYjpKOo6Kf3L=4 z{UdEWfRw(XRp6BUO`2pc`A$jh<1DZy>@L3EFFR8fypE3x`0*Vd*U0@lUJ`LxU5LhA zyMv2~h+8+@8xQezi5+;XsExbuF#K8zlkFVS)nnU*-TE*0>rVSwBa%_s4&0wcyE$e- zTa6y3_m9&CS3YBXb2=SjZ-ViAtQLQJb*-*w>V9X^H(hj-G48ilf(oi0q3G2um4r%f ztBkLkPoQ<FaRz3a7?9a^o-lj6dKqxcP3aYWeG~a;3#IOne<)$0yge4EsHibM%xX!i zilO!zAnZv+!;P^w(T=S{gI1iBWBZT)cnGUj=0E9gKE*`V`{p|#Ro_hwk3!|t2a6e& zR1VWE!$yNX{xV&&=yu6Z{`oGeI7H2UN$9	i&7-hNw6$*&d#n$K1$rhT#0Tl~caT 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 G@BaaJk#0Ev diff --git a/wikipiki/profiles02.png b/wikipiki/profiles02.png deleted file mode 100644 index 71b30769f09353c5778724619d84a575c4260701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26989 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 bqXWsIKMd=&bvXq3*@NU|RHVzKOyU0rTkX@S From fd860e6c6985cfa2469fc78ae4d784bdf9a9a473 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 4 Dec 2021 10:23:59 +0000 Subject: [PATCH 008/203] flip RFP newwin max values, closes #1286 --- user.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/user.js b/user.js index af8b477..cf9df45 100644 --- a/user.js +++ b/user.js @@ -8,7 +8,7 @@ * README: 1. Consider using Tor Browser if it meets your needs or fits your threat model - * https://www.torproject.org/about/torusers.html.en + * https://2019.www.torproject.org/about/torusers.html 2. Required reading: Overview, Backing Up, Implementing, and Maintenance entries * https://github.com/arkenfox/user.js/wiki 3. If you skipped step 2, return to step 2 @@ -479,7 +479,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * no unsafe renegotiations on the channel between the browser and the server. * [STATS] SSL Labs (July 2021) reports over 99% of sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation - * [2] https://tools.ietf.org/html/rfc5746 + * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 * [4] https://www.ssllabs.com/ssl-pulse/ ***/ user_pref("security.ssl.require_safe_negotiation", true); @@ -1031,12 +1031,11 @@ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs") * RFP also has a few side effects: mainly timezone is UTC0, and websites will prefer light theme * [1] https://bugzilla.mozilla.org/418986 ***/ user_pref("privacy.resistFingerprinting", true); -/* 4502: set new window sizes to round to hundreds [FF55+] [SETUP-CHROME] - * Width will round down to multiples of 200s and height to 100s, to fit your screen. - * The max values are a starting point to round from if you want some control +/* 4502: set new window size rounding max values [FF55+] + * [SETUP-CHROME] sizes round down in hundreds: width to 200s and height to 100s, to fit your screen * [1] https://bugzilla.mozilla.org/1330882 ***/ - // user_pref("privacy.window.maxInnerWidth", 1000); - // user_pref("privacy.window.maxInnerHeight", 1000); +user_pref("privacy.window.maxInnerWidth", 1600); +user_pref("privacy.window.maxInnerHeight", 900); /* 4503: disable mozAddonManager Web API [FF57+] * [NOTE] To allow extensions to work on AMO, you also need 2662 * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ @@ -1221,7 +1220,7 @@ user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] * string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks * [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/ user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] -/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF91+ ***/ +/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ // placeholder /*** [SECTION 7000]: DON'T BOTHER ***/ From 9d61992c8cc2a46fb58ea79866aced25e3574d9b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 5 Dec 2021 19:49:32 +0000 Subject: [PATCH 009/203] don't clear offlineApps on shutdown, #1291 - in v94 we switched to cookies lifetime as session, so users could use site exceptions to retain selected cookies (to stay logged in one assumes) - that mean not deleting all cookies on shutdown - but some login methods/types require more than cookies and also need the "site data" part of "cookies + site data" - that's the offlineApps part - note: all site data (and cookies) is still cleared on close except site exceptions --- user.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/user.js b/user.js index cf9df45..4087fc3 100644 --- a/user.js +++ b/user.js @@ -902,8 +902,9 @@ user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] +user_pref("privacy.clearOnShutdown.offlineApps", false); // [DEFAULT: false] user_pref("privacy.clearOnShutdown.cookies", false); -user_pref("privacy.clearOnShutdown.offlineApps", true); + // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] Site Preferences /* 2812: reset default items to clear with Ctrl-Shift-Del (to match 2811) [SETUP-CHROME] * This dialog can also be accessed from the menu History>Clear Recent History @@ -914,11 +915,11 @@ user_pref("privacy.cpd.cache", true); // [DEFAULT: true] user_pref("privacy.cpd.formdata", true); // [DEFAULT: true] user_pref("privacy.cpd.history", true); // [DEFAULT: true] user_pref("privacy.cpd.sessions", true); // [DEFAULT: true] +user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] user_pref("privacy.cpd.cookies", false); -user_pref("privacy.cpd.offlineApps", true); // user_pref("privacy.cpd.downloads", true); // not used, see note above - // user_pref("privacy.cpd.passwords", false); // [DEFAULT: false] this is not listed - // user_pref("privacy.cpd.siteSettings", false); // [DEFAULT: false] Site Preferences + // user_pref("privacy.cpd.passwords", false); // [DEFAULT: false] not listed + // user_pref("privacy.cpd.siteSettings", false); // [DEFAULT: false] /* 2813: clear Session Restore data when sanitizing on shutdown or manually [FF34+] * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) * [NOTE] privacy.clearOnShutdown.openWindows prevents resuming from crashes (also see 5008) From ec595c3b95909998695a714e96dfcf2a29823ba1 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 5 Dec 2021 19:59:33 +0000 Subject: [PATCH 010/203] fixup duplicate line --- user.js | 1 - 1 file changed, 1 deletion(-) diff --git a/user.js b/user.js index 4087fc3..5f06eb4 100644 --- a/user.js +++ b/user.js @@ -905,7 +905,6 @@ user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.offlineApps", false); // [DEFAULT: false] user_pref("privacy.clearOnShutdown.cookies", false); // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] - // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] Site Preferences /* 2812: reset default items to clear with Ctrl-Shift-Del (to match 2811) [SETUP-CHROME] * This dialog can also be accessed from the menu History>Clear Recent History * Firefox remembers your last choices. This will reset them when you start Firefox From b60a888da3c9df3862b9dbaff1b1ac2621e67db2 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 6 Dec 2021 14:45:47 +0000 Subject: [PATCH 011/203] update WebRTC, closes #1282 --- user.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/user.js b/user.js index 5f06eb4..6064f03 100644 --- a/user.js +++ b/user.js @@ -631,18 +631,25 @@ user_pref("privacy.userContext.ui.enabled", true); /*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!"); /* 2001: disable WebRTC (Web Real-Time Communication) - * [SETUP-WEB] WebRTC can leak your private network address from behind your VPN, but if this - * is not your threat model, and you want Real-Time Communication, this is the pref for you ***/ -user_pref("media.peerconnection.enabled", false); -/* 2002: limit WebRTC private network address leaks - * In FF70+ these settings match Mode 4 (Mode 3 in older versions) [3] + * Firefox uses mDNS hostname obfuscation on desktop (except Windows7/8) and the + * private IP is NEVER exposed, except if required in TRUSTED scenarios; i.e. after + * you grant device (microphone or camera) access + * [SETUP-HARDEN] Test first. Windows7/8 users only: behind a proxy who never use WebRTC * [TEST] https://browserleaks.com/webrtc - * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1189041,1297416,1452713 - * [2] https://wiki.mozilla.org/Media/WebRTC/Privacy - * [3] https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-12#section-5.2 ***/ + * [1] https://groups.google.com/g/discuss-webrtc/c/6stQXi72BEU/m/2FwZd24UAQAJ + * [2] https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates#section-3.1.1 ***/ + // user_pref("media.peerconnection.enabled", false); +/* 2002: force WebRTC inside the proxy [FF70+] ***/ +user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); +/* 2003: force a single network interface for ICE candidates generation [FF42+] + * When using a system-wide proxy, it uses the proxy interface + * [1] https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate + * [2] https://wiki.mozilla.org/Media/WebRTC/Privacy ***/ user_pref("media.peerconnection.ice.default_address_only", true); -user_pref("media.peerconnection.ice.no_host", true); // [FF51+] -user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); // [FF70+] +/* 2004: force exclusion of private IPs from ICE candidates [FF51+] + * [SETUP-HARDEN] This will protect your private IP even in TRUSTED scenarios after you + * grant device access, but often results in breakage on video-conferencing platforms ***/ + // user_pref("media.peerconnection.ice.no_host", true); /* 2020: disable GMP (Gecko Media Plugins) * [1] https://wiki.mozilla.org/GeckoMediaPlugins ***/ // user_pref("media.gmp-provider.enabled", false); From fec5168203edf80768d67fef3eda664b0c899cc6 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 8 Dec 2021 04:28:47 +0000 Subject: [PATCH 012/203] 95 deprecated --- user.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/user.js b/user.js index 6064f03..69e0fae 100644 --- a/user.js +++ b/user.js @@ -370,9 +370,9 @@ user_pref("browser.urlbar.speculativeConnect.enabled", false); * [1] https://bugzilla.mozilla.org/1642623 ***/ user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0); /* 0807: disable location bar contextual suggestions [FF92+] - * [SETTING] Privacy & Security>Address Bar>Contextual Suggestions + * [SETTING] Privacy & Security>Address Bar>Suggestions from... * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ -user_pref("browser.urlbar.suggest.quicksuggest", false); +user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); /* 0808: disable tab-to-search [FF85+] * Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search @@ -1363,11 +1363,11 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("full-screen-api.warning.timeout", 0); /* APPEARANCE ***/ // user_pref("browser.download.autohideButton", false); // [FF57+] - // user_pref("ui.systemUsesDarkTheme", 1); // [FF67+] [HIDDEN PREF] - // 0=light, 1=dark: with RFP this only affects chrome // user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); // [FF68+] allow userChrome/userContent // user_pref("ui.prefersReducedMotion", 1); // disable chrome animations [FF77+] [RESTART] [HIDDEN PREF] // 0=no-preference, 1=reduce: with RFP this only affects chrome + // user_pref("ui.systemUsesDarkTheme", 1); // [FF67+] [HIDDEN PREF] + // 0=light, 1=dark: with RFP this only affects chrome /* CONTENT BEHAVIOR ***/ // user_pref("accessibility.typeaheadfind", true); // enable "Find As You Type" // user_pref("clipboard.autocopy", false); // disable autocopy default [LINUX] @@ -1411,6 +1411,10 @@ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is m // 1402: limit font visibility (Windows, Mac, some Linux) [FF79+] - replaced by new 1402 // [-] https://bugzilla.mozilla.org/1715507 // user_pref("layout.css.font-visibility.level", 1); +// FF95 +// 0807: disable location bar contextual suggestions [FF92+] - replaced by new 0807 + // [-] https://bugzilla.mozilla.org/1735976 +user_pref("browser.urlbar.suggest.quicksuggest", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From 7e1b92567ca2bb76ad358d0fc786fd60b3cf7970 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 8 Dec 2021 12:13:47 +0000 Subject: [PATCH 013/203] 95 final --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 69e0fae..af1d2a6 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 24 November 2021 -* version 95-alpha +* date: 8 December 2021 +* version 95 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt From 72cc4d176ea08b4373e437f9f3f44e92da547c92 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 11:41:18 +0000 Subject: [PATCH 014/203] 0706: network.proxy.allow_bypass, closes #1292 --- user.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index af1d2a6..c0993af 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 8 December 2021 -* version 95 +* date: 9 December 2021 +* version 96-alpha * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -327,6 +327,12 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] * [SETUP-CHROME] If you use a proxy and you trust your extensions * [1] https://blog.mozilla.org/security/2021/10/25/securing-the-proxy-api-for-firefox-add-ons/ ***/ // user_pref("network.proxy.failover_direct", false); +/* 0706: disable proxy bypass for system request failures [FF95+] + * RemoteSettings, UpdateService, Telemetry [1] + * [WARNING] If false, this will break the fallback for some security features + * [SETUP-CHROME] If you use a proxy and you understand the security impact + * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1732792,1733994,1733481 ***/ + // user_pref("network.proxy.allow_bypass", false); // [HIDDEN PREF] /* 0710: disable DNS-over-HTTPS (DoH) rollout [FF60+] * 0=off by default, 2=TRR (Trusted Recursive Resolver) first, 3=TRR only, 5=explicitly off * see "doh-rollout.home-region": USA Feb 2020, Canada July 2021 [3] From fe75baa79f407c2dd2368c4170265c10f0904da9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 11:44:51 +0000 Subject: [PATCH 015/203] move DNT to DON'T BOTHER --- user.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/user.js b/user.js index c0993af..3784ca6 100644 --- a/user.js +++ b/user.js @@ -612,10 +612,6 @@ user_pref("network.http.referer.XOriginPolicy", 2); /* 1602: control the amount of cross-origin information to send [FF52+] * 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/ user_pref("network.http.referer.XOriginTrimmingPolicy", 2); -/* 1603: enable the DNT (Do Not Track) HTTP header - * [NOTE] DNT is enforced with Enhanced Tracking Protection (2710) - * [SETTING] Privacy & Security>Enhanced Tracking Protection>Send websites a "Do Not Track" signal... ***/ - // user_pref("privacy.donottrackheader.enabled", true); /*** [SECTION 1700]: CONTAINERS Check out Temporary Containers [2], read the article [3], and visit the wiki/repo [4] @@ -1318,6 +1314,9 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] It can compromise security. System addons ship with prefs, use those ***/ // user_pref("extensions.systemAddon.update.enabled", false); // [FF62+] // user_pref("extensions.systemAddon.update.url", ""); // [FF44+] +/* 7015: enable the DNT (Do Not Track) HTTP header + * [WHY] DNT is enforced with Tracking Protection (2710) ***/ + // user_pref("privacy.donottrackheader.enabled", true); /*** [SECTION 8000]: DON'T BOTHER: NON-RFP [WHY] They are insufficient to help anti-fingerprinting and do more harm than good From f7bba92c71cc71455b0128fc4f4c739eae1cca16 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:28:45 +0000 Subject: [PATCH 016/203] cleanout FPI section farewell parrot --- user.js | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/user.js b/user.js index 3784ca6..e1475cc 100644 --- a/user.js +++ b/user.js @@ -941,45 +941,10 @@ user_pref("privacy.cpd.cookies", false); * which will display a blank value, and are not guaranteed to work ***/ user_pref("privacy.sanitize.timeSpan", 0); -/*** [SECTION 4000]: FPI (FIRST PARTY ISOLATION) - 1278037 - indexedDB (FF51+) - 1277803 - favicons (FF52+) - 1264562 - OCSP cache (FF52+) - 1268726 - Shared Workers (FF52+) - 1316283 - SSL session cache (FF52+) - 1317927 - media cache (FF53+) - 1323644 - HSTS and HPKP (FF54+) - 1334690 - HTTP Alternative Services (FF54+) - 1334693 - SPDY/HTTP2 (FF55+) - 1337893 - DNS cache (FF55+) - 1344170 - blob: URI (FF55+) - 1300671 - data:, about: URLs (FF55+) - 1473247 - IP addresses (FF63+) - 1542309 - top-level domain URLs when host is in the public suffix list (FF68+) - 1506693 - pdfjs range-based requests (FF68+) - 1330467 - site permissions (FF69+) - 1534339 - IPv6 (FF73+) - 1721858 - WebSocket (FF92+) -***/ +/*** [SECTION 4000]: FPI (FIRST PARTY ISOLATION) ***/ user_pref("_user.js.parrot", "4000 syntax error: the parrot's pegged out"); -/* 4001: enable First Party Isolation [FF51+] - * [SETUP-WEB] Breaks some cross-origin logins - * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1260931,1299996 ***/ +/* 4001: enable First Party Isolation [FF51+] ***/ user_pref("privacy.firstparty.isolate", true); -/* 4002: enforce FPI restriction for window.opener [FF54+] - * [NOTE] Setting this to false may reduce the breakage in 4001 - * FF65+ blocks postMessage with targetOrigin "*" if originAttributes don't match. But - * to reduce breakage it ignores the 1st-party domain (FPD) originAttribute [2][3] - * The 2nd pref removes that limitation and will only allow communication if FPDs also match - * [1] https://bugzilla.mozilla.org/1319773#c22 - * [2] https://bugzilla.mozilla.org/1492607 - * [3] https://developer.mozilla.org/docs/Web/API/Window/postMessage ***/ - // user_pref("privacy.firstparty.isolate.restrict_opener_access", true); // [DEFAULT: true] - // user_pref("privacy.firstparty.isolate.block_post_message", true); -/* 4003: enable scheme with FPI [FF78+] - * [NOTE] Experimental: existing data and site permissions are incompatible - * and some site exceptions may not work e.g. HTTPS-only mode (1244) ***/ - // user_pref("privacy.firstparty.isolate.use_site", true); /*** [SECTION 4500]: RFP (RESIST FINGERPRINTING) RFP covers a wide range of ongoing fingerprinting solutions. From 97322d6e8bcf5082cfee601e480c520f0008a422 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:31:38 +0000 Subject: [PATCH 017/203] various inactive FPI prefs --- scratchpad-scripts/arkenfox-clear-removed.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-clear-removed.js index cc8d330..17e39e2 100644 --- a/scratchpad-scripts/arkenfox-clear-removed.js +++ b/scratchpad-scripts/arkenfox-clear-removed.js @@ -13,6 +13,10 @@ const aPREFS = [ /* removed in arkenfox user.js */ + /* 92+ */ + 'privacy.firstparty.isolate.block_post_message', + 'privacy.firstparty.isolate.restrict_opener_access', + 'privacy.firstparty.isolate.use_site', /* 79-91 */ 'alerts.showFavicons', 'browser.newtabpage.activity-stream.asrouter.providers.snippets', From 0634a568efeca4d837a34dae47b1a3b14c85dccd Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 13:45:46 +0000 Subject: [PATCH 018/203] remove redundant site data prefs we've never used these - service workers are disabled (or soon to be covered by dFPI when enabled) and sanitizing is already done (or will be done via enhanced cookie cleaning) - storage API, storage access API: we sanitize on close, and sites are isolated by eTLD+1 --- user.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/user.js b/user.js index e1475cc..f26212d 100644 --- a/user.js +++ b/user.js @@ -856,21 +856,6 @@ user_pref("privacy.trackingprotection.enabled", true); user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] -/* 2740: disable service worker cache and cache storage - * [NOTE] We clear service worker cache on exit (2811) - * [1] https://w3c.github.io/ServiceWorker/#privacy ***/ - // user_pref("dom.caches.enabled", false); -/* 2750: disable Storage API [FF51+] - * The API gives sites the ability to find out how much space they can use, how much - * they are already using, and even control whether or not they need to be alerted - * before the user agent disposes of site data in order to make room for other things. - * [1] https://developer.mozilla.org/docs/Web/API/StorageManager - * [2] https://developer.mozilla.org/docs/Web/API/Storage_API - * [3] https://blog.mozilla.org/l10n/2017/03/07/firefox-l10n-report-aurora-54/ ***/ - // user_pref("dom.storageManager.enabled", false); -/* 2755: disable Storage Access API [FF65+] - * [1] https://developer.mozilla.org/docs/Web/API/Storage_Access_API ***/ - // user_pref("dom.storage_access.enabled", false); /* 2760: enable Local Storage Next Generation (LSNG) [FF65+] ***/ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] From 83602baa38e70bf8a4a87837ab1cc5f5cff87bf8 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 13:47:57 +0000 Subject: [PATCH 019/203] misc site storage/data prefs been inactive since jesus was a baby --- scratchpad-scripts/arkenfox-clear-removed.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-clear-removed.js index 17e39e2..b78cc94 100644 --- a/scratchpad-scripts/arkenfox-clear-removed.js +++ b/scratchpad-scripts/arkenfox-clear-removed.js @@ -14,6 +14,9 @@ const aPREFS = [ /* removed in arkenfox user.js */ /* 92+ */ + 'dom.caches.enabled', + 'dom.storageManager.enabled', + 'dom.storage_access.enabled', 'privacy.firstparty.isolate.block_post_message', 'privacy.firstparty.isolate.restrict_opener_access', 'privacy.firstparty.isolate.use_site', From 1fc43574d6cb0a229892738d7b9117a4e4f1fa2c Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 14:00:21 +0000 Subject: [PATCH 020/203] move "cookie" permission info into 2801 --- user.js | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/user.js b/user.js index f26212d..298366f 100644 --- a/user.js +++ b/user.js @@ -54,7 +54,7 @@ 2300: WEB WORKERS 2400: DOM (DOCUMENT OBJECT MODEL) 2600: MISCELLANEOUS - 2700: PERSISTENT STORAGE + 2700: ETP (ENHANCED TRACKING PROTECTION) 2800: SHUTDOWN & SANITIZING 4000: FPI (FIRST PARTY ISOLATION) 4500: RFP (RESIST FINGERPRINTING) @@ -819,19 +819,7 @@ user_pref("extensions.postDownloadThirdPartyPrompt", false); * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ // user_pref("extensions.webextensions.restrictedDomains", ""); -/*** [SECTION 2700]: PERSISTENT STORAGE - Data SET by websites including - cookies : profile\cookies.sqlite - localStorage : profile\webappsstore.sqlite - indexedDB : profile\storage\default - serviceWorkers : - - [NOTE] indexedDB and serviceWorkers are not available in Private Browsing Mode - [NOTE] Blocking cookies also blocks websites access to: localStorage (incl. sessionStorage), - indexedDB, sharedWorker, and serviceWorker (and therefore service worker cache and notifications) - If you set a site exception for cookies (either "Allow" or "Allow for Session") then they become - accessible to websites except shared/service workers where the cookie setting must be "Allow" -***/ +/*** [SECTION 2700]: ETP (Enhanced Tracking Protection) ***/ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!"); /* 2701: disable or isolate 3rd-party cookies and site-data [SETUP-WEB] * 0 = Accept cookies and site data @@ -864,6 +852,8 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" /** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ /* 2801: delete cookies and site data on exit * 0=keep until they expire (default), 2=keep until you close Firefox + * [NOTE] A "cookie" permission also controls localStorage/sessionStorage, idexedDB. + * sharedWorkers and serviceWorkers required an `Allow` permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow * If using FPI the syntax must be https://example.com/^firstPartyDomain=example.com From 5d508e42422ab910dfd3155f223f0a0cab216808 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 14:05:47 +0000 Subject: [PATCH 021/203] move LSNG to don't touch --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 298366f..580d006 100644 --- a/user.js +++ b/user.js @@ -844,8 +844,6 @@ user_pref("privacy.trackingprotection.enabled", true); user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] -/* 2760: enable Local Storage Next Generation (LSNG) [FF65+] ***/ -user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -1169,6 +1167,8 @@ user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] * string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks * [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/ user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] +/* 0607: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ +user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ // placeholder From de28689e76f16820f4e34acb3fc850b2b47418df Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 14:13:39 +0000 Subject: [PATCH 022/203] flip from FPI to dFPI I will tidy and expand 2700 entries later --- user.js | 52 ++++++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/user.js b/user.js index 580d006..d00c8e5 100644 --- a/user.js +++ b/user.js @@ -56,7 +56,6 @@ 2600: MISCELLANEOUS 2700: ETP (ENHANCED TRACKING PROTECTION) 2800: SHUTDOWN & SANITIZING - 4000: FPI (FIRST PARTY ISOLATION) 4500: RFP (RESIST FINGERPRINTING) 5000: OPTIONAL OPSEC 5500: OPTIONAL HARDENING @@ -819,31 +818,14 @@ user_pref("extensions.postDownloadThirdPartyPrompt", false); * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ // user_pref("extensions.webextensions.restrictedDomains", ""); -/*** [SECTION 2700]: ETP (Enhanced Tracking Protection) ***/ +/*** [SECTION 2700]: ETP (ENHANCED TRACKING PROTECTION) ***/ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!"); -/* 2701: disable or isolate 3rd-party cookies and site-data [SETUP-WEB] - * 0 = Accept cookies and site data - * 1 = (Block) All third-party cookies - * 2 = (Block) All cookies - * 3 = (Block) Cookies from unvisited websites - * 4 = (Block) Cross-site tracking cookies (default) - * 5 = (Isolate All) Cross-site cookies (TCP: Total Cookie Protection / dFPI: dynamic FPI) [1] (FF86+) - * Option 5 with FPI enabled (4001) is ignored and not shown, and option 4 used instead - * [NOTE] You can set cookie exceptions under site permissions or use an extension - * [NOTE] Enforcing category to custom ensures ETP related prefs are always honored - * [SETTING] Privacy & Security>Enhanced Tracking Protection>Custom>Cookies - * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ ***/ -user_pref("network.cookie.cookieBehavior", 1); -user_pref("browser.contentblocking.category", "custom"); -/* 2710: enable Enhanced Tracking Protection (ETP) in all windows - * [SETTING] Privacy & Security>Enhanced Tracking Protection>Custom>Tracking content +/* 2701: enable Enhanced Tracking Protection's (ETP) Strict Mode [FF86+] + * Strict Mode enables Total Cookie Protection (dFPI /dynamic FPI) + * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ -user_pref("privacy.trackingprotection.enabled", true); -/* 2711: enable various ETP lists ***/ -user_pref("privacy.trackingprotection.socialtracking.enabled", true); - // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] - // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] +user_pref("browser.contentblocking.category", "strict"); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -914,11 +896,6 @@ user_pref("privacy.cpd.cookies", false); * which will display a blank value, and are not guaranteed to work ***/ user_pref("privacy.sanitize.timeSpan", 0); -/*** [SECTION 4000]: FPI (FIRST PARTY ISOLATION) ***/ -user_pref("_user.js.parrot", "4000 syntax error: the parrot's pegged out"); -/* 4001: enable First Party Isolation [FF51+] ***/ -user_pref("privacy.firstparty.isolate", true); - /*** [SECTION 4500]: RFP (RESIST FINGERPRINTING) RFP covers a wide range of ongoing fingerprinting solutions. It is an all-or-nothing buy in: you cannot pick and choose what parts you want @@ -1169,6 +1146,10 @@ user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] /* 0607: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] +/* 6008: enforce no First Party Isolation [FF51+] + * [WARNING] FPI is no longer supported and is replaced by network partitioning (FF85+) + * and dFPI (2701), and enabling FPI disables those ***/ +user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ // placeholder @@ -1210,8 +1191,8 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("security.tls.version.min", 3); // [DEFAULT: 3] // user_pref("security.tls.version.max", 4); /* 7005: disable SSL session IDs [FF36+] - * [WHY] Passive fingerprinting and perf costs. These are session-only and isolated - * with network partitioning (FF85+) or when using FPI and/or containers ***/ + * [WHY] Passive fingerprinting and perf costs. These are session-only + * and isolated with network partitioning (FF85+) and/or containers ***/ // user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF] /* 7006: onions * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ @@ -1234,7 +1215,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("network.http.spdy.enabled.http2", false); // user_pref("network.http.spdy.websockets", false); // [FF65+] /* 7010: disable HTTP Alternative Services [FF37+] - * [WHY] Already isolated by network partitioning (FF85+) or FPI ***/ + * [WHY] Already isolated by network partitioning (FF85+) ***/ // user_pref("network.http.altsvc.enabled", false); // user_pref("network.http.altsvc.oe", false); // [DEFAULT: false FF94+] /* 7011: disable website control over browser right-click context menu @@ -1255,8 +1236,15 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("extensions.systemAddon.update.enabled", false); // [FF62+] // user_pref("extensions.systemAddon.update.url", ""); // [FF44+] /* 7015: enable the DNT (Do Not Track) HTTP header - * [WHY] DNT is enforced with Tracking Protection (2710) ***/ + * [WHY] DNT is enforced with Tracking Protection which is used in ETP Strict (2701) ***/ // user_pref("privacy.donottrackheader.enabled", true); +/* 7016: customize ETP settings + * [WHY] Just use strict which sets these at runtime (2701) ***/ + // user_pref("network.cookie.cookieBehavior", 5); + // user_pref("privacy.trackingprotection.enabled", true); + // user_pref("privacy.trackingprotection.socialtracking.enabled", true); + // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] + // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] /*** [SECTION 8000]: DON'T BOTHER: NON-RFP [WHY] They are insufficient to help anti-fingerprinting and do more harm than good From 4d5abd6cc39ab67a52578c7849e1076198009925 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 14:18:25 +0000 Subject: [PATCH 023/203] tweak 8000 title lets not encourage non-RFP users to see this as a sign to use them --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index d00c8e5..12dfb76 100644 --- a/user.js +++ b/user.js @@ -61,7 +61,7 @@ 5500: OPTIONAL HARDENING 6000: DON'T TOUCH 7000: DON'T BOTHER - 8000: DON'T BOTHER: NON-RFP + 8000: DON'T BOTHER: FINGERPRINTING 9000: PERSONAL 9999: DEPRECATED / REMOVED / LEGACY / RENAMED @@ -1246,7 +1246,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] -/*** [SECTION 8000]: DON'T BOTHER: NON-RFP +/*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING [WHY] They are insufficient to help anti-fingerprinting and do more harm than good [WARNING] DO NOT USE with RFP. RFP already covers these and they can interfere ***/ From 8860c90abf5c1fb0f87661c3327ae4e75992be13 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 14:31:41 +0000 Subject: [PATCH 024/203] make service workers inactive currently 3rd party service workers are blocked in FF95 when dFPI is enabled (which this version has should anyone update to 96-alpha) - but I get an error even on first party - https://arkenfox.github.io/TZP/tzp.html#storage - I get : service worker | test : enabled | failed: SecurityError in FF96+ service workers they are covered by dFPI - see https://bugzilla.mozilla.org/show_bug.cgi?id=1731999 --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 12dfb76..8e93194 100644 --- a/user.js +++ b/user.js @@ -698,7 +698,7 @@ user_pref("_user.js.parrot", "2300 syntax error: the parrot's off the twig!"); * service worker notifications (2304), push notifications (disabled, 2305) and service worker * cache (2740). If you enable this pref, then check those settings as well * [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1320796#c7 ***/ -user_pref("dom.serviceWorkers.enabled", false); + // user_pref("dom.serviceWorkers.enabled", false); /* 2304: disable Web Notifications * [NOTE] Web Notifications can also use service workers (2302) and are behind a prompt (7002) * [1] https://developer.mozilla.org/docs/Web/API/Notifications_API ***/ From d5bc6715cd3d416b5c09af6be8d5a561df9de19a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 16:14:36 +0000 Subject: [PATCH 025/203] remove web workers section farewell parrot --- user.js | 67 ++++++++++++++++++--------------------------------------- 1 file changed, 21 insertions(+), 46 deletions(-) diff --git a/user.js b/user.js index 8e93194..aca695b 100644 --- a/user.js +++ b/user.js @@ -51,7 +51,6 @@ 1600: HEADERS / REFERERS 1700: CONTAINERS 2000: PLUGINS / MEDIA / WEBRTC - 2300: WEB WORKERS 2400: DOM (DOCUMENT OBJECT MODEL) 2600: MISCELLANEOUS 2700: ETP (ENHANCED TRACKING PROTECTION) @@ -675,46 +674,6 @@ user_pref("media.eme.enabled", false); * [1] https://support.mozilla.org/questions/1293231 ***/ user_pref("media.autoplay.blocking_policy", 2); -/*** [SECTION 2300]: WEB WORKERS - A worker is a JS "background task" running in a global context, i.e. it is different from - the current window. Workers can spawn new workers (must be the same origin & scheme), - including service and shared workers. Shared workers can be utilized by multiple scripts and - communicate between browsing contexts (windows/tabs/iframes) and can even control your cache. - - [1] Web Workers: https://developer.mozilla.org/docs/Web/API/Web_Workers_API - [2] Worker: https://developer.mozilla.org/docs/Web/API/Worker - [3] Service Worker: https://developer.mozilla.org/docs/Web/API/Service_Worker_API - [4] SharedWorker: https://developer.mozilla.org/docs/Web/API/SharedWorker - [5] ChromeWorker: https://developer.mozilla.org/docs/Web/API/ChromeWorker - [6] Notifications: https://support.mozilla.org/questions/1165867#answer-981820 -***/ -user_pref("_user.js.parrot", "2300 syntax error: the parrot's off the twig!"); -/* 2302: disable service workers [FF32, FF44-compat] - * Service workers essentially act as proxy servers that sit between web apps, and the - * browser and network, are event driven, and can control the web page/site they are associated - * with, intercepting and modifying navigation and resource requests, and caching resources. - * [NOTE] Service workers require HTTPS, have no DOM access, and are not supported in PB mode [1] - * [SETUP-WEB] Disabling service workers will break some sites. This pref is required true for - * service worker notifications (2304), push notifications (disabled, 2305) and service worker - * cache (2740). If you enable this pref, then check those settings as well - * [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1320796#c7 ***/ - // user_pref("dom.serviceWorkers.enabled", false); -/* 2304: disable Web Notifications - * [NOTE] Web Notifications can also use service workers (2302) and are behind a prompt (7002) - * [1] https://developer.mozilla.org/docs/Web/API/Notifications_API ***/ - // user_pref("dom.webnotifications.enabled", false); // [FF22+] - // user_pref("dom.webnotifications.serviceworker.enabled", false); // [FF44+] -/* 2305: disable Push Notifications [FF44+] - * Push is an API that allows websites to send you (subscribed) messages even when the site - * isn't loaded, by pushing messages to your userAgentID through Mozilla's Push Server - * [NOTE] Push requires service workers (2302) to subscribe to and display, and is behind - * a prompt (7002). Disabling service workers alone doesn't stop Firefox polling the - * Mozilla Push Server. To remove all subscriptions, reset your userAgentID. - * [1] https://support.mozilla.org/kb/push-notifications-firefox - * [2] https://developer.mozilla.org/docs/Web/API/Push_API ***/ -user_pref("dom.push.enabled", false); - // user_pref("dom.push.userAgentID", ""); - /*** [SECTION 2400]: DOM (DOCUMENT OBJECT MODEL) ***/ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); /* 2401: disable "Confirm you want to leave" dialog on page close @@ -728,6 +687,19 @@ user_pref("dom.disable_window_move_resize", true); user_pref("dom.disable_open_during_load", true); /* 2404: limit events that can cause a popup [SETUP-WEB] ***/ user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); +/* 2410: disable Web Notifications + * [NOTE] Web Notifications are behind a prompt (7002) ***/ + // user_pref("dom.webnotifications.enabled", false); // [FF22+] + // user_pref("dom.webnotifications.serviceworker.enabled", false); // [FF44+] +/* 2411: disable Push Notifications [FF44+] + * Push allows websites to send you subscribed messages through Mozilla's Push Server, + * and requires service workers to subscribe to and display, and is behind a prompt (7002) + * [NOTE] Disabling service workers alone doesn't stop Firefox polling the Mozilla Push Server + * [NOTE] To remove all subscriptions, reset your userAgentID + * [1] https://support.mozilla.org/kb/push-notifications-firefox + * [2] https://developer.mozilla.org/docs/Web/API/Push_API ***/ +user_pref("dom.push.enabled", false); + // user_pref("dom.push.userAgentID", ""); /*** [SECTION 2600]: MISCELLANEOUS ***/ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); @@ -821,7 +793,7 @@ user_pref("extensions.postDownloadThirdPartyPrompt", false); /*** [SECTION 2700]: ETP (ENHANCED TRACKING PROTECTION) ***/ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!"); /* 2701: enable Enhanced Tracking Protection's (ETP) Strict Mode [FF86+] - * Strict Mode enables Total Cookie Protection (dFPI /dynamic FPI) + * [NOTE] ETP Strict Mode enables Total Cookie Protection (TCP) * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ @@ -833,7 +805,7 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" /* 2801: delete cookies and site data on exit * 0=keep until they expire (default), 2=keep until you close Firefox * [NOTE] A "cookie" permission also controls localStorage/sessionStorage, idexedDB. - * sharedWorkers and serviceWorkers required an `Allow` permission + * sharedWorkers and serviceWorkers require an `Allow` permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow * If using FPI the syntax must be https://example.com/^firstPartyDomain=example.com @@ -1147,8 +1119,8 @@ user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] /* 0607: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /* 6008: enforce no First Party Isolation [FF51+] - * [WARNING] FPI is no longer supported and is replaced by network partitioning (FF85+) - * and dFPI (2701), and enabling FPI disables those ***/ + * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), + * and enabling FPI disables those. FPI is no longer maintained ***/ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ // placeholder @@ -1215,7 +1187,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("network.http.spdy.enabled.http2", false); // user_pref("network.http.spdy.websockets", false); // [FF65+] /* 7010: disable HTTP Alternative Services [FF37+] - * [WHY] Already isolated by network partitioning (FF85+) ***/ + * [WHY] Already isolated with network partitioning (FF85+) ***/ // user_pref("network.http.altsvc.enabled", false); // user_pref("network.http.altsvc.oe", false); // [DEFAULT: false FF94+] /* 7011: disable website control over browser right-click context menu @@ -1245,6 +1217,9 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] +/* 7017: disable service workers [FF32, FF44-compat] + * [WHY] Already isolated (FF96+) with TCP (2701) or blocked in 3rd parties (FF95 or lower) ***/ + // user_pref("dom.serviceWorkers.enabled", false); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING [WHY] They are insufficient to help anti-fingerprinting and do more harm than good From d9f49bdf1fc7950bbaeb1882ee9e0d0fef31b9f9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 16:17:53 +0000 Subject: [PATCH 026/203] make 7017 clearer --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index aca695b..2c216a7 100644 --- a/user.js +++ b/user.js @@ -1218,7 +1218,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] /* 7017: disable service workers [FF32, FF44-compat] - * [WHY] Already isolated (FF96+) with TCP (2701) or blocked in 3rd parties (FF95 or lower) ***/ + * [WHY] Already isolated (FF96+) with TCP (2701) or blocked with TCP in 3rd parties (FF95 or lower) ***/ // user_pref("dom.serviceWorkers.enabled", false); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING From ec7cb6a491feced2ab2f89880fc3c0538dbdf130 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 9 Dec 2021 17:17:52 +0000 Subject: [PATCH 027/203] 2702: partition service workers --- user.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 2c216a7..63579c1 100644 --- a/user.js +++ b/user.js @@ -798,6 +798,8 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ user_pref("browser.contentblocking.category", "strict"); +/* 2702: enable state partitioning of service workers [FF96+] ***/ +user_pref("privacy.partition.serviceWorkers", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -1218,7 +1220,8 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] /* 7017: disable service workers [FF32, FF44-compat] - * [WHY] Already isolated (FF96+) with TCP (2701) or blocked with TCP in 3rd parties (FF95 or lower) ***/ + * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2702) + * or blocked with TCP in 3rd parties (FF95 or lower) ***/ // user_pref("dom.serviceWorkers.enabled", false); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING From 13e5fe17b195ac1e6aa04e57fdca9052f2cfee0e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 06:56:43 +0000 Subject: [PATCH 028/203] remove rfpalts (#1288) --- updater.bat | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/updater.bat b/updater.bat index a806ca6..badd778 100644 --- a/updater.bat +++ b/updater.bat @@ -3,10 +3,10 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.14 +REM ## version: 4.15 REM ## instructions: https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts -SET v=4.14 +SET v=4.15 VERIFY ON CD /D "%~dp0" @@ -23,7 +23,6 @@ IF /I "%~1"=="-merge" (SET _merge=1) IF /I "%~1"=="-updatebatch" (SET _updateb=1) IF /I "%~1"=="-singlebackup" (SET _singlebackup=1) IF /I "%~1"=="-esr" (SET _esr=1) -IF /I "%~1"=="-rfpalts" (SET _rfpalts=1) SHIFT GOTO parse :endparse @@ -141,10 +140,6 @@ IF EXIST user.js.new (DEL /F "user.js.new") CALL :message "Retrieving latest user.js file from github repository..." CALL :psdownload https://raw.githubusercontent.com/arkenfox/user.js/master/user.js "user.js.new" IF EXIST user.js.new ( - IF DEFINED _rfpalts ( - CALL :message "Activating RFP Alternatives section..." - CALL :activate user.js.new "[SETUP-non-RFP]" - ) IF DEFINED _esr ( CALL :message "Activating ESR section..." CALL :activate user.js.new ".x still uses all the following prefs" @@ -320,8 +315,6 @@ ECHO: Run without user input. CALL :message " -singleBackup" ECHO: Use a single backup file and overwrite it on new updates, instead of ECHO: cumulative backups. This was the default behaviour before v4.3. -CALL :message " -rfpAlts" -ECHO: Activate RFP Alternatives section CALL :message " -updateBatch" ECHO: Update the script itself on execution, before the normal routine. CALL :message "" From 1f0dc1853df76853f6559a2ddc99a4b98db76ea3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 09:13:09 +0000 Subject: [PATCH 029/203] merge scratchpads into one --- scratchpad-scripts/arkenfox-clear-removed.js | 202 ++++++++++++++++++- 1 file changed, 199 insertions(+), 3 deletions(-) diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-clear-removed.js index b78cc94..d928daf 100644 --- a/scratchpad-scripts/arkenfox-clear-removed.js +++ b/scratchpad-scripts/arkenfox-clear-removed.js @@ -1,7 +1,9 @@ /*** - This will reset the preferences that have been removed completely from the arkenfox user.js. + This will reset the preferences that have been + - removed from the arkenfox user.js. + - deprecated by Mozilla but used in the arkenfox user.js in the past - Last updated: 29-August-2021 + Last updated: 11-December-2021 For instructions see: https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts] @@ -12,7 +14,201 @@ if ('undefined' === typeof(Services)) return alert('about:config needs to be the active tab!'); const aPREFS = [ - /* removed in arkenfox user.js */ + /* DEPRECATED */ + /* FF92+ */ + 'browser.urlbar.suggest.quicksuggest', // 95 + 'layout.css.font-visibility.level', // 94 + 'security.ssl3.rsa_des_ede3_sha', // 93 + /* FF79-91 */ + 'browser.cache.offline.storage.enable', + 'browser.download.hide_plugins_without_extensions', + 'browser.library.activity-stream.enabled', + 'browser.search.geoSpecificDefaults', + 'browser.search.geoSpecificDefaults.url', + 'dom.ipc.plugins.flash.subprocess.crashreporter.enabled', + 'dom.ipc.plugins.reportCrashURL', + 'dom.w3c_pointer_events.enabled', + 'intl.charset.fallback.override', + 'network.ftp.enabled', + 'plugin.state.flash', + 'security.mixed_content.block_object_subrequest', + 'security.ssl.errorReporting.automatic', + 'security.ssl.errorReporting.enabled', + 'security.ssl.errorReporting.url', + /* 69-78 */ + 'browser.newtabpage.activity-stream.telemetry.ping.endpoint', + 'browser.tabs.remote.allowLinkedWebInFileUriProcess', + 'browser.urlbar.oneOffSearches', + 'devtools.webide.autoinstallADBExtension', + 'devtools.webide.enabled', + 'dom.indexedDB.enabled', + 'extensions.blocklist.url', + 'geo.wifi.logging.enabled', + 'geo.wifi.uri', + 'gfx.downloadable_fonts.woff2.enabled', + 'media.autoplay.allow-muted', + 'media.autoplay.enabled.user-gestures-needed', + 'offline-apps.allow_by_default', + 'plugins.click_to_play', + 'privacy.userContext.longPressBehavior', + 'toolkit.cosmeticAnimations.enabled', + 'toolkit.telemetry.hybridContent.enabled', + 'webgl.disable-extensions', + /* 61-68 */ + 'app.update.enabled', + 'browser.aboutHomeSnippets.updateUrl', + 'browser.chrome.errorReporter.enabled', + 'browser.chrome.errorReporter.submitUrl', + 'browser.chrome.favicons', + 'browser.ctrlTab.previews', + 'browser.fixup.hide_user_pass', + 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr', + 'browser.newtabpage.activity-stream.disableSnippets', + 'browser.onboarding.enabled', + 'browser.search.countryCode', + 'browser.urlbar.autocomplete.enabled', + 'devtools.webide.adbAddonURL', + 'devtools.webide.autoinstallADBHelper', + 'dom.event.highrestimestamp.enabled', + 'experiments.activeExperiment', + 'experiments.enabled', + 'experiments.manifest.uri', + 'experiments.supported', + 'lightweightThemes.update.enabled', + 'media.autoplay.enabled', + 'network.allow-experiments', + 'network.cookie.lifetime.days', + 'network.jar.block-remote-files', + 'network.jar.open-unsafe-types', + 'plugin.state.java', + 'security.csp.enable_violation_events', + 'security.csp.experimentalEnabled', + 'shield.savant.enabled', + /* 60 or earlier */ + 'browser.bookmarks.showRecentlyBookmarked', + 'browser.casting.enabled', + 'browser.crashReports.unsubmittedCheck.autoSubmit', + 'browser.formautofill.enabled', + 'browser.formfill.saveHttpsForms', + 'browser.fullscreen.animate', + 'browser.history.allowPopState', + 'browser.history.allowPushState', + 'browser.history.allowReplaceState', + 'browser.newtabpage.activity-stream.enabled', + 'browser.newtabpage.directory.ping', + 'browser.newtabpage.directory.source', + 'browser.newtabpage.enhanced', + 'browser.newtabpage.introShown', + 'browser.pocket.api', + 'browser.pocket.enabled', + 'browser.pocket.oAuthConsumerKey', + 'browser.pocket.site', + 'browser.polaris.enabled', + 'browser.safebrowsing.appRepURL', + 'browser.safebrowsing.enabled', + 'browser.safebrowsing.gethashURL', + 'browser.safebrowsing.malware.reportURL', + 'browser.safebrowsing.provider.google.appRepURL', + 'browser.safebrowsing.reportErrorURL', + 'browser.safebrowsing.reportGenericURL', + 'browser.safebrowsing.reportMalwareErrorURL', + 'browser.safebrowsing.reportMalwareMistakeURL', + 'browser.safebrowsing.reportMalwareURL', + 'browser.safebrowsing.reportPhishMistakeURL', + 'browser.safebrowsing.reportURL', + 'browser.safebrowsing.updateURL', + 'browser.search.showOneOffButtons', + 'browser.selfsupport.enabled', + 'browser.selfsupport.url', + 'browser.sessionstore.privacy_level_deferred', + 'browser.tabs.animate', + 'browser.trackingprotection.gethashURL', + 'browser.trackingprotection.updateURL', + 'browser.urlbar.unifiedcomplete', + 'browser.usedOnWindows10.introURL', + 'camera.control.autofocus_moving_callback.enabled', + 'camera.control.face_detection.enabled', + 'datareporting.healthreport.about.reportUrl', + 'datareporting.healthreport.about.reportUrlUnified', + 'datareporting.healthreport.documentServerURI', + 'datareporting.healthreport.service.enabled', + 'datareporting.policy.dataSubmissionEnabled.v2', + 'devtools.webide.autoinstallFxdtAdapters', + 'dom.archivereader.enabled', + 'dom.battery.enabled', + 'dom.beforeAfterKeyboardEvent.enabled', + 'dom.disable_image_src_set', + 'dom.disable_window_open_feature.scrollbars', + 'dom.disable_window_status_change', + 'dom.enable_user_timing', + 'dom.flyweb.enabled', + 'dom.idle-observers-api.enabled', + 'dom.keyboardevent.code.enabled', + 'dom.network.enabled', + 'dom.push.udp.wakeupEnabled', + 'dom.telephony.enabled', + 'dom.vr.oculus050.enabled', + 'dom.workers.enabled', + 'dom.workers.sharedWorkers.enabled', + 'extensions.formautofill.experimental', + 'extensions.screenshots.system-disabled', + 'extensions.shield-recipe-client.api_url', + 'extensions.shield-recipe-client.enabled', + 'full-screen-api.approval-required', + 'general.useragent.locale', + 'geo.security.allowinsecure', + 'intl.locale.matchOS', + 'loop.enabled', + 'loop.facebook.appId', + 'loop.facebook.enabled', + 'loop.facebook.fallbackUrl', + 'loop.facebook.shareUrl', + 'loop.feedback.formURL', + 'loop.feedback.manualFormURL', + 'loop.logDomains', + 'loop.server', + 'media.block-play-until-visible', + 'media.eme.apiVisible', + 'media.eme.chromium-api.enabled', + 'media.getusermedia.screensharing.allow_on_old_platforms', + 'media.getusermedia.screensharing.allowed_domains', + 'media.gmp-eme-adobe.autoupdate', + 'media.gmp-eme-adobe.enabled', + 'media.gmp-eme-adobe.visible', + 'network.http.referer.userControlPolicy', + 'network.http.sendSecureXSiteReferrer', + 'network.http.spdy.enabled.http2draft', + 'network.http.spdy.enabled.v3-1', + 'network.websocket.enabled', + 'pageThumbs.enabled', + 'pfs.datasource.url', + 'plugin.scan.Acrobat', + 'plugin.scan.Quicktime', + 'plugin.scan.WindowsMediaPlayer', + 'plugins.enumerable_names', + 'plugins.update.notifyUser', + 'plugins.update.url', + 'privacy.clearOnShutdown.passwords', + 'privacy.donottrackheader.value', + 'security.mixed_content.send_hsts_priming', + 'security.mixed_content.use_hsts', + 'security.ssl3.ecdhe_ecdsa_rc4_128_sha', + 'security.ssl3.ecdhe_rsa_rc4_128_sha', + 'security.ssl3.rsa_rc4_128_md5', + 'security.ssl3.rsa_rc4_128_sha', + 'security.tls.insecure_fallback_hosts.use_static_list', + 'security.tls.unrestricted_rc4_fallback', + 'security.xpconnect.plugin.unrestricted', + 'social.directories', + 'social.enabled', + 'social.remote-install.enabled', + 'social.share.activationPanelEnabled', + 'social.shareDirectory', + 'social.toast-notifications.enabled', + 'social.whitelist', + 'toolkit.telemetry.unifiedIsOptIn', + + /* REMOVED */ /* 92+ */ 'dom.caches.enabled', 'dom.storageManager.enabled', From 4ebabbb5692a25df6a5bf43911f13d078bb44e4e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 09:13:51 +0000 Subject: [PATCH 030/203] Delete arkenfox-clear-deprecated.js --- .../arkenfox-clear-deprecated.js | 232 ------------------ 1 file changed, 232 deletions(-) delete mode 100644 scratchpad-scripts/arkenfox-clear-deprecated.js diff --git a/scratchpad-scripts/arkenfox-clear-deprecated.js b/scratchpad-scripts/arkenfox-clear-deprecated.js deleted file mode 100644 index 9ef8100..0000000 --- a/scratchpad-scripts/arkenfox-clear-deprecated.js +++ /dev/null @@ -1,232 +0,0 @@ -/*** - Version: up to and including FF/ESR91 - - This will reset the preferences that have been deprecated by Mozilla - and used in the arkenfox user.js - - It is in reverse order, so feel free to remove sections that do not apply - - For instructions see: - https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts] -***/ - -(() => { - - if ('undefined' === typeof(Services)) return alert('about:config needs to be the active tab!'); - - const aPREFS = [ - /* deprecated */ - /* FF79-91 */ - 'browser.cache.offline.storage.enable', - 'browser.download.hide_plugins_without_extensions', - 'browser.library.activity-stream.enabled', - 'browser.search.geoSpecificDefaults', - 'browser.search.geoSpecificDefaults.url', - 'dom.ipc.plugins.flash.subprocess.crashreporter.enabled', - 'dom.ipc.plugins.reportCrashURL', - 'dom.w3c_pointer_events.enabled', - 'intl.charset.fallback.override', - 'network.ftp.enabled', - 'plugin.state.flash', - 'security.mixed_content.block_object_subrequest', - 'security.ssl.errorReporting.automatic', - 'security.ssl.errorReporting.enabled', - 'security.ssl.errorReporting.url', - /* 69-78 */ - 'browser.newtabpage.activity-stream.telemetry.ping.endpoint', - 'browser.tabs.remote.allowLinkedWebInFileUriProcess', - 'browser.urlbar.oneOffSearches', - 'devtools.webide.autoinstallADBExtension', - 'devtools.webide.enabled', - 'dom.indexedDB.enabled', - 'extensions.blocklist.url', - 'geo.wifi.logging.enabled', - 'geo.wifi.uri', - 'gfx.downloadable_fonts.woff2.enabled', - 'media.autoplay.allow-muted', - 'media.autoplay.enabled.user-gestures-needed', - 'offline-apps.allow_by_default', - 'plugins.click_to_play', - 'privacy.userContext.longPressBehavior', - 'toolkit.cosmeticAnimations.enabled', - 'toolkit.telemetry.hybridContent.enabled', - 'webgl.disable-extensions', - /* 61-68 */ - 'app.update.enabled', - 'browser.aboutHomeSnippets.updateUrl', - 'browser.chrome.errorReporter.enabled', - 'browser.chrome.errorReporter.submitUrl', - 'browser.chrome.favicons', - 'browser.ctrlTab.previews', - 'browser.fixup.hide_user_pass', - 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr', - 'browser.newtabpage.activity-stream.disableSnippets', - 'browser.onboarding.enabled', - 'browser.search.countryCode', - 'browser.urlbar.autocomplete.enabled', - 'devtools.webide.adbAddonURL', - 'devtools.webide.autoinstallADBHelper', - 'dom.event.highrestimestamp.enabled', - 'experiments.activeExperiment', - 'experiments.enabled', - 'experiments.manifest.uri', - 'experiments.supported', - 'lightweightThemes.update.enabled', - 'media.autoplay.enabled', - 'network.allow-experiments', - 'network.cookie.lifetime.days', - 'network.jar.block-remote-files', - 'network.jar.open-unsafe-types', - 'plugin.state.java', - 'security.csp.enable_violation_events', - 'security.csp.experimentalEnabled', - 'shield.savant.enabled', - /* 60 or earlier */ - 'browser.bookmarks.showRecentlyBookmarked', - 'browser.casting.enabled', - 'browser.crashReports.unsubmittedCheck.autoSubmit', - 'browser.formautofill.enabled', - 'browser.formfill.saveHttpsForms', - 'browser.fullscreen.animate', - 'browser.history.allowPopState', - 'browser.history.allowPushState', - 'browser.history.allowReplaceState', - 'browser.newtabpage.activity-stream.enabled', - 'browser.newtabpage.directory.ping', - 'browser.newtabpage.directory.source', - 'browser.newtabpage.enhanced', - 'browser.newtabpage.introShown', - 'browser.pocket.api', - 'browser.pocket.enabled', - 'browser.pocket.oAuthConsumerKey', - 'browser.pocket.site', - 'browser.polaris.enabled', - 'browser.safebrowsing.appRepURL', - 'browser.safebrowsing.enabled', - 'browser.safebrowsing.gethashURL', - 'browser.safebrowsing.malware.reportURL', - 'browser.safebrowsing.provider.google.appRepURL', - 'browser.safebrowsing.reportErrorURL', - 'browser.safebrowsing.reportGenericURL', - 'browser.safebrowsing.reportMalwareErrorURL', - 'browser.safebrowsing.reportMalwareMistakeURL', - 'browser.safebrowsing.reportMalwareURL', - 'browser.safebrowsing.reportPhishMistakeURL', - 'browser.safebrowsing.reportURL', - 'browser.safebrowsing.updateURL', - 'browser.search.showOneOffButtons', - 'browser.selfsupport.enabled', - 'browser.selfsupport.url', - 'browser.sessionstore.privacy_level_deferred', - 'browser.tabs.animate', - 'browser.trackingprotection.gethashURL', - 'browser.trackingprotection.updateURL', - 'browser.urlbar.unifiedcomplete', - 'browser.usedOnWindows10.introURL', - 'camera.control.autofocus_moving_callback.enabled', - 'camera.control.face_detection.enabled', - 'datareporting.healthreport.about.reportUrl', - 'datareporting.healthreport.about.reportUrlUnified', - 'datareporting.healthreport.documentServerURI', - 'datareporting.healthreport.service.enabled', - 'datareporting.policy.dataSubmissionEnabled.v2', - 'devtools.webide.autoinstallFxdtAdapters', - 'dom.archivereader.enabled', - 'dom.battery.enabled', - 'dom.beforeAfterKeyboardEvent.enabled', - 'dom.disable_image_src_set', - 'dom.disable_window_open_feature.scrollbars', - 'dom.disable_window_status_change', - 'dom.enable_user_timing', - 'dom.flyweb.enabled', - 'dom.idle-observers-api.enabled', - 'dom.keyboardevent.code.enabled', - 'dom.network.enabled', - 'dom.push.udp.wakeupEnabled', - 'dom.telephony.enabled', - 'dom.vr.oculus050.enabled', - 'dom.workers.enabled', - 'dom.workers.sharedWorkers.enabled', - 'extensions.formautofill.experimental', - 'extensions.screenshots.system-disabled', - 'extensions.shield-recipe-client.api_url', - 'extensions.shield-recipe-client.enabled', - 'full-screen-api.approval-required', - 'general.useragent.locale', - 'geo.security.allowinsecure', - 'intl.locale.matchOS', - 'loop.enabled', - 'loop.facebook.appId', - 'loop.facebook.enabled', - 'loop.facebook.fallbackUrl', - 'loop.facebook.shareUrl', - 'loop.feedback.formURL', - 'loop.feedback.manualFormURL', - 'loop.logDomains', - 'loop.server', - 'media.block-play-until-visible', - 'media.eme.apiVisible', - 'media.eme.chromium-api.enabled', - 'media.getusermedia.screensharing.allow_on_old_platforms', - 'media.getusermedia.screensharing.allowed_domains', - 'media.gmp-eme-adobe.autoupdate', - 'media.gmp-eme-adobe.enabled', - 'media.gmp-eme-adobe.visible', - 'network.http.referer.userControlPolicy', - 'network.http.sendSecureXSiteReferrer', - 'network.http.spdy.enabled.http2draft', - 'network.http.spdy.enabled.v3-1', - 'network.websocket.enabled', - 'pageThumbs.enabled', - 'pfs.datasource.url', - 'plugin.scan.Acrobat', - 'plugin.scan.Quicktime', - 'plugin.scan.WindowsMediaPlayer', - 'plugins.enumerable_names', - 'plugins.update.notifyUser', - 'plugins.update.url', - 'privacy.clearOnShutdown.passwords', - 'privacy.donottrackheader.value', - 'security.mixed_content.send_hsts_priming', - 'security.mixed_content.use_hsts', - 'security.ssl3.ecdhe_ecdsa_rc4_128_sha', - 'security.ssl3.ecdhe_rsa_rc4_128_sha', - 'security.ssl3.rsa_rc4_128_md5', - 'security.ssl3.rsa_rc4_128_sha', - 'security.tls.insecure_fallback_hosts.use_static_list', - 'security.tls.unrestricted_rc4_fallback', - 'security.xpconnect.plugin.unrestricted', - 'social.directories', - 'social.enabled', - 'social.remote-install.enabled', - 'social.share.activationPanelEnabled', - 'social.shareDirectory', - 'social.toast-notifications.enabled', - 'social.whitelist', - 'toolkit.telemetry.unifiedIsOptIn', - - /* reset parrot: check your open about:config after running the script */ - '_user.js.parrot' - ]; - - console.clear(); - - let c = 0; - for (const sPname of aPREFS) { - if (Services.prefs.prefHasUserValue(sPname)) { - Services.prefs.clearUserPref(sPname); - if (!Services.prefs.prefHasUserValue(sPname)) { - console.info('reset', sPname); - c++; - } else console.warn('failed to reset', sPname); - } - } - - focus(); - - const d = (c==1) ? ' pref' : ' prefs'; - alert(c ? 'successfully reset ' + c + d + "\n\nfor details check the console" : 'nothing to reset'); - - return 'all done'; - -})(); From 93874bda436f6365832c1ecaeb691013bab516c6 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 09:14:59 +0000 Subject: [PATCH 031/203] rename --- .../{arkenfox-clear-removed.js => arkenfox-cleanup.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scratchpad-scripts/{arkenfox-clear-removed.js => arkenfox-cleanup.js} (100%) diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-cleanup.js similarity index 100% rename from scratchpad-scripts/arkenfox-clear-removed.js rename to scratchpad-scripts/arkenfox-cleanup.js From 460951df9e54a24540181a74379a12aaffa7798e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 09:37:45 +0000 Subject: [PATCH 032/203] tidy, add instructions --- scratchpad-scripts/arkenfox-cleanup.js | 27 ++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index d928daf..17de71a 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -1,12 +1,29 @@ /*** This will reset the preferences that have been - - removed from the arkenfox user.js. - - deprecated by Mozilla but used in the arkenfox user.js in the past + - removed from the arkenfox user.js + - deprecated by Mozilla but listed in the arkenfox user.js in the past Last updated: 11-December-2021 - For instructions see: - https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts] + Instructions: + - [optional] close Firefox and backup your profile + - [optional] disable your network connection [1] + - start Firefox + - load about:config and press Ctrl+Shift+K to open the Web Console for about:config + - using about:config is important, so the script has the right permissions + - paste this script + - if you edited the list of prefs in the script, make sure the last pref does not have a trailing comma + - hit enter + - check the Info output to see which prefs were reset + - restart + - some prefs require a restart + - a restart will reapply your user.js + - [optional] re-enable your network connection + + [1] Blocking Firefox from the internet ensures it cannot act on your reset preferences in the + period before you restart it, such as app and extension auto-updating, or downloading unwanted + components (GMP etc). It depends on what you're resetting and how long before you restart. + ***/ (() => { @@ -435,6 +452,8 @@ // 'dom.ipc.plugins.sandbox-level.default', // 'dom.ipc.plugins.sandbox-level.flash', // 'security.sandbox.logging.enabled', + + /* IMPORTANT: last active pref must not have a trailing comma */ /* reset parrot: check your open about:config after running the script */ '_user.js.parrot' ]; From af109d4696a3f8142a1023974b2a3713a89b030a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 11:15:34 +0000 Subject: [PATCH 033/203] tweak 7016 --- user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 63579c1..279dd42 100644 --- a/user.js +++ b/user.js @@ -1213,8 +1213,9 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] DNT is enforced with Tracking Protection which is used in ETP Strict (2701) ***/ // user_pref("privacy.donottrackheader.enabled", true); /* 7016: customize ETP settings - * [WHY] Just use strict which sets these at runtime (2701) ***/ + * [WHY] Arkenfox only supports strict which sets these at runtime (2701) ***/ // user_pref("network.cookie.cookieBehavior", 5); + // user_pref("privacy.partition.network_state.ocsp_cache", true); // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] From 7ec13c0323f53a959eaa7f21b425b30290112e12 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 12:22:00 +0000 Subject: [PATCH 034/203] sharedWorkers tweak tested in FF91+. Seems as if sharedWorkers no longer requires an explicit `Allow` --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 279dd42..3827e00 100644 --- a/user.js +++ b/user.js @@ -806,8 +806,8 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" /** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ /* 2801: delete cookies and site data on exit * 0=keep until they expire (default), 2=keep until you close Firefox - * [NOTE] A "cookie" permission also controls localStorage/sessionStorage, idexedDB. - * sharedWorkers and serviceWorkers require an `Allow` permission + * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, idexedDB, + * sharedWorkers and serviceWorkers. serviceWorkers require an `Allow` permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow * If using FPI the syntax must be https://example.com/^firstPartyDomain=example.com From 54810e333f4b9ef442ab66eeb412efcdcfe81eda Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 11 Dec 2021 19:17:43 +0000 Subject: [PATCH 035/203] typo --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 3827e00..23ba046 100644 --- a/user.js +++ b/user.js @@ -806,7 +806,7 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" /** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ /* 2801: delete cookies and site data on exit * 0=keep until they expire (default), 2=keep until you close Firefox - * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, idexedDB, + * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, indexedDB, * sharedWorkers and serviceWorkers. serviceWorkers require an `Allow` permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow From 8cdb30cc0811ae3f2198aeb24c330993f5192400 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 00:26:12 +0000 Subject: [PATCH 036/203] make cookie pref active @SkewedZeppelin ... https://github.com/arkenfox/user.js/issues/1051#issuecomment-991806497 --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 23ba046..99a62e8 100644 --- a/user.js +++ b/user.js @@ -798,6 +798,7 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ user_pref("browser.contentblocking.category", "strict"); +user_pref("network.cookie.cookieBehavior", 5); /* 2702: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); @@ -1214,7 +1215,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.donottrackheader.enabled", true); /* 7016: customize ETP settings * [WHY] Arkenfox only supports strict which sets these at runtime (2701) ***/ - // user_pref("network.cookie.cookieBehavior", 5); // user_pref("privacy.partition.network_state.ocsp_cache", true); // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); From f836e553635ffe057d49c591e6256d46158ccdf0 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 13:31:01 +0000 Subject: [PATCH 037/203] tidy ETP stuff --- user.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 99a62e8..8fea2f0 100644 --- a/user.js +++ b/user.js @@ -792,13 +792,12 @@ user_pref("extensions.postDownloadThirdPartyPrompt", false); /*** [SECTION 2700]: ETP (ENHANCED TRACKING PROTECTION) ***/ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!"); -/* 2701: enable Enhanced Tracking Protection's (ETP) Strict Mode [FF86+] +/* 2701: enable ETP Strict Mode [FF86+] * [NOTE] ETP Strict Mode enables Total Cookie Protection (TCP) * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ user_pref("browser.contentblocking.category", "strict"); -user_pref("network.cookie.cookieBehavior", 5); /* 2702: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); @@ -1214,7 +1213,9 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] DNT is enforced with Tracking Protection which is used in ETP Strict (2701) ***/ // user_pref("privacy.donottrackheader.enabled", true); /* 7016: customize ETP settings - * [WHY] Arkenfox only supports strict which sets these at runtime (2701) ***/ + * [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ + // user_pref("network.cookie.cookieBehavior", 5); + // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("privacy.partition.network_state.ocsp_cache", true); // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); From c8c86262d7dc21cfc1329cfc7fafdb286149d21d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 13:51:25 +0000 Subject: [PATCH 038/203] enforce SmartBlock shims --- user.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 8fea2f0..bdaf498 100644 --- a/user.js +++ b/user.js @@ -798,7 +798,7 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ user_pref("browser.contentblocking.category", "strict"); -/* 2702: enable state partitioning of service workers [FF96+] ***/ +/* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ @@ -1124,6 +1124,10 @@ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), * and enabling FPI disables those. FPI is no longer maintained ***/ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] +/* 6009: enforce SmartBlock shims [FF81+] + * In FF96+ these are listed in about:compat + * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ +user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ // placeholder From 8bc25b552db5fb1d0fbe5cd248bbc15c4aa216db Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 15:30:53 +0000 Subject: [PATCH 039/203] expand 0650 to include any removed item this should reduce any dependency on the scratchpad script --- user.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index bdaf498..77f79c1 100644 --- a/user.js +++ b/user.js @@ -1128,8 +1128,13 @@ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] * In FF96+ these are listed in about:compat * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] -/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF92+ ***/ - // placeholder +/* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ + // user_pref(""dom.caches.enabled", ""); + // user_pref(""dom.storageManager.enabled", ""); + // user_pref(""dom.storage_access.enabled", ""); + // user_pref(""privacy.firstparty.isolate.block_post_message", ""); + // user_pref(""privacy.firstparty.isolate.restrict_opener_access", ""); + // user_pref(""privacy.firstparty.isolate.use_site", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From 8de87de0506c7a508958920e24ff2ca0b7026c98 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 15:41:55 +0000 Subject: [PATCH 040/203] update 0704: GIO, closes #1050 (#1300) https://bugzilla.mozilla.org/show_bug.cgi?id=1666725 --- user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 77f79c1..5560119 100644 --- a/user.js +++ b/user.js @@ -313,9 +313,9 @@ user_pref("network.proxy.socks_remote_dns", true); * [SETUP-CHROME] Can break extensions for profiles on network shares * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/26424 ***/ user_pref("network.file.disable_unc_paths", true); // [HIDDEN PREF] -/* 0704: disable GIO as a potential proxy bypass vector [FF60+] - * Gvfs/GIO has a set of supported protocols like obex, network, archive, computer, dav, cdda, - * gphoto2, trash, etc. By default only smb and sftp protocols are accepted so far (as of FF64) +/* 0704: disable GIO as a potential proxy bypass vector + * Gvfs/GIO has a set of supported protocols like obex, network, archive, computer, + * dav, cdda, gphoto2, trash, etc. By default only sftp is accepted (FF87+) * [1] https://bugzilla.mozilla.org/1433507 * [2] https://en.wikipedia.org/wiki/GVfs * [3] https://en.wikipedia.org/wiki/GIO_(software) ***/ From 78297132b421115da2820da133c24f53de3bb658 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Dec 2021 15:44:39 +0000 Subject: [PATCH 041/203] fix syntax --- user.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/user.js b/user.js index 5560119..1ae1f9c 100644 --- a/user.js +++ b/user.js @@ -1129,12 +1129,12 @@ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] /* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ - // user_pref(""dom.caches.enabled", ""); - // user_pref(""dom.storageManager.enabled", ""); - // user_pref(""dom.storage_access.enabled", ""); - // user_pref(""privacy.firstparty.isolate.block_post_message", ""); - // user_pref(""privacy.firstparty.isolate.restrict_opener_access", ""); - // user_pref(""privacy.firstparty.isolate.use_site", ""); + // user_pref("dom.caches.enabled", ""); + // user_pref("dom.storageManager.enabled", ""); + // user_pref("dom.storage_access.enabled", ""); + // user_pref("privacy.firstparty.isolate.block_post_message", ""); + // user_pref("privacy.firstparty.isolate.restrict_opener_access", ""); + // user_pref("privacy.firstparty.isolate.use_site", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From c269ac9f7d8226fdc53da74754a0441809ac3c7b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 13 Dec 2021 03:49:42 +0000 Subject: [PATCH 042/203] remove duplicate --- scratchpad-scripts/arkenfox-cleanup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 17de71a..c209797 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -152,7 +152,6 @@ 'datareporting.policy.dataSubmissionEnabled.v2', 'devtools.webide.autoinstallFxdtAdapters', 'dom.archivereader.enabled', - 'dom.battery.enabled', 'dom.beforeAfterKeyboardEvent.enabled', 'dom.disable_image_src_set', 'dom.disable_window_open_feature.scrollbars', From 238f1545f4de5b873e9e717c458c200a049c73e5 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 13 Dec 2021 14:15:25 +0000 Subject: [PATCH 043/203] =?UTF-8?q?fixup=20thanks=20#fxbrit=20have=20a=20?= =?UTF-8?q?=F0=9F=8D=A5=20fish=20cake?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 1ae1f9c..88af5a7 100644 --- a/user.js +++ b/user.js @@ -1231,7 +1231,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] /* 7017: disable service workers [FF32, FF44-compat] - * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2702) + * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2710) * or blocked with TCP in 3rd parties (FF95 or lower) ***/ // user_pref("dom.serviceWorkers.enabled", false); From 7811e912f479e1b1036ab30328d89f5d1ef7422f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 14 Dec 2021 13:25:46 +0000 Subject: [PATCH 044/203] make push notifications inactive - they require SWers which are already blocked by virtue of permissions being session only - also remove "dom.push.userAgentID" as this means prefsCleaner resets it and would wipe user's subscriptions - not adding "dom.push.userAgentID" to the cleanup script for the same reason --- user.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/user.js b/user.js index 88af5a7..3e150a3 100644 --- a/user.js +++ b/user.js @@ -695,11 +695,10 @@ user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); * Push allows websites to send you subscribed messages through Mozilla's Push Server, * and requires service workers to subscribe to and display, and is behind a prompt (7002) * [NOTE] Disabling service workers alone doesn't stop Firefox polling the Mozilla Push Server - * [NOTE] To remove all subscriptions, reset your userAgentID + * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" * [1] https://support.mozilla.org/kb/push-notifications-firefox * [2] https://developer.mozilla.org/docs/Web/API/Push_API ***/ -user_pref("dom.push.enabled", false); - // user_pref("dom.push.userAgentID", ""); + // user_pref("dom.push.enabled", false); /*** [SECTION 2600]: MISCELLANEOUS ***/ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); @@ -807,7 +806,7 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" /* 2801: delete cookies and site data on exit * 0=keep until they expire (default), 2=keep until you close Firefox * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, indexedDB, - * sharedWorkers and serviceWorkers. serviceWorkers require an `Allow` permission + * sharedWorkers and serviceWorkers. serviceWorkers require an "Allow" permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow * If using FPI the syntax must be https://example.com/^firstPartyDomain=example.com From 93f0ff89c8ff54e74b1d0cc9e27a41f653c33812 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 15 Dec 2021 00:05:03 +0000 Subject: [PATCH 045/203] move web notifcations to don't bother --- user.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/user.js b/user.js index 3e150a3..3e19e34 100644 --- a/user.js +++ b/user.js @@ -687,18 +687,6 @@ user_pref("dom.disable_window_move_resize", true); user_pref("dom.disable_open_during_load", true); /* 2404: limit events that can cause a popup [SETUP-WEB] ***/ user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); -/* 2410: disable Web Notifications - * [NOTE] Web Notifications are behind a prompt (7002) ***/ - // user_pref("dom.webnotifications.enabled", false); // [FF22+] - // user_pref("dom.webnotifications.serviceworker.enabled", false); // [FF44+] -/* 2411: disable Push Notifications [FF44+] - * Push allows websites to send you subscribed messages through Mozilla's Push Server, - * and requires service workers to subscribe to and display, and is behind a prompt (7002) - * [NOTE] Disabling service workers alone doesn't stop Firefox polling the Mozilla Push Server - * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" - * [1] https://support.mozilla.org/kb/push-notifications-firefox - * [2] https://developer.mozilla.org/docs/Web/API/Push_API ***/ - // user_pref("dom.push.enabled", false); /*** [SECTION 2600]: MISCELLANEOUS ***/ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); @@ -1179,6 +1167,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7006: onions * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ // user_pref("dom.securecontext.whitelist_onions", true); // 1382359 + // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 // user_pref("network.http.referer.hideOnionSource", true); // 1305144 /* 7007: referers * [WHY] Only cross-origin referers (1600s) need control ***/ @@ -1233,6 +1222,16 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2710) * or blocked with TCP in 3rd parties (FF95 or lower) ***/ // user_pref("dom.serviceWorkers.enabled", false); +/* 7018: disable Web Notifications + * [WHY] Web Notifications are behind a prompt (7002) + * [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ ***/ + // user_pref("dom.webnotifications.enabled", false); // [FF22+] + // user_pref("dom.webnotifications.serviceworker.enabled", false); // [FF44+] +/* 7019: disable Push Notifications [FF44+] + * [WHY] Push requires subscription + * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" + * [1] https://support.mozilla.org/kb/push-notifications-firefox ***/ + // user_pref("dom.push.enabled", false); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING [WHY] They are insufficient to help anti-fingerprinting and do more harm than good From bb56056a68906ddd178f64ab0b016c8bbe9786fb Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 15 Dec 2021 19:23:03 +0000 Subject: [PATCH 046/203] explain 0-RTT --- user.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 3e19e34..4d70fd3 100644 --- a/user.js +++ b/user.js @@ -481,7 +481,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * safe from the attack if it disables renegotiations but the problem is that the browser can't * know that. Setting this pref to true is the only way for the browser to ensure there will be * no unsafe renegotiations on the channel between the browser and the server. - * [STATS] SSL Labs (July 2021) reports over 99% of sites have secure renegotiation [4] + * [STATS] SSL Labs (July 2021) reports over 99% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 @@ -490,8 +490,11 @@ user_pref("security.ssl.require_safe_negotiation", true); /* 1203: reset TLS 1.0 and 1.1 downgrades i.e. session only ***/ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] /* 1206: disable TLS1.3 0-RTT (round-trip time) [FF51+] + * This data is not forward secret, as it is encrypted solely under keys derived using + * the offered PSK. There are no guarantees of non-replay between connections * [1] https://github.com/tlswg/tls13-spec/issues/1001 - * [2] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ ***/ + * [2] https://www.rfc-editor.org/rfc/rfc9001.html#name-replay-attacks-with-0-rtt + * [3] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ ***/ user_pref("security.tls.enable_0rtt_data", false); /** OCSP (Online Certificate Status Protocol) From 6675225ec4a40bdb7d38b299893cd5b472b60c3a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 23 Dec 2021 06:36:39 +0000 Subject: [PATCH 047/203] make 0301 inactive auto-updating is not a security nor a privacy risk, by default it should be enabled and it's on end-users if they want to disable it - does not affect windows users --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 4d70fd3..56be810 100644 --- a/user.js +++ b/user.js @@ -142,7 +142,7 @@ user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the /* 0301: disable auto-INSTALLING Firefox updates [NON-WINDOWS] * [NOTE] You will still get prompts to update, and should do so in a timely manner * [SETTING] General>Firefox Updates>Check for updates but let you choose to install them ***/ -user_pref("app.update.auto", false); + // user_pref("app.update.auto", false); /* 0302: disable auto-INSTALLING Firefox updates via a background service [FF90+] [WINDOWS] * [SETTING] General>Firefox Updates>Automatically install updates>When Firefox is not running * [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows ***/ @@ -945,7 +945,7 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); // user_pref("privacy.resistFingerprinting.testGranularityMask", 0); /* 4506: set RFP's font visibility level (1402) [FF94+] ***/ - // user_pref("layout.css.font-visibility.resistFingerprinting", 1); + // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] /* 4507: disable showing about:blank as soon as possible during startup [FF60+] * When default true this no longer masks the RFP chrome resizing activity * [1] https://bugzilla.mozilla.org/1448423 ***/ From d48d3ad29a095eb0bd467040c9db5482a79dc516 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 23 Dec 2021 21:20:28 +0000 Subject: [PATCH 048/203] remove browser.eme.ui.enabled --- scratchpad-scripts/arkenfox-cleanup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index c209797..6aa8c31 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -287,7 +287,6 @@ 'browser.cache.disk.smart_size.first_run', 'browser.cache.offline.insecure.enable', 'browser.contentblocking.enabled', - 'browser.eme.ui.enabled', 'browser.laterrun.enabled', 'browser.offline-apps.notify', 'browser.rights.3.shown', From 87bd8683fa384c0e9932230c8957ac0717a0b430 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 23 Dec 2021 21:22:41 +0000 Subject: [PATCH 049/203] 2022: add browser.eme.ui.enabled for those who want to remove DRM prompts and have no intention of enabling it --- user.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/user.js b/user.js index 56be810..3930e10 100644 --- a/user.js +++ b/user.js @@ -660,11 +660,13 @@ user_pref("media.peerconnection.ice.default_address_only", true); * [NOTE] This is covered by the EME master switch (2022) ***/ // user_pref("media.gmp-widevinecdm.enabled", false); /* 2022: disable all DRM content (EME: Encryption Media Extension) + * Optionally hide the setting which also removes the DRM prompt * [SETUP-WEB] e.g. Netflix, Amazon Prime, Hulu, HBO, Disney+, Showtime, Starz, DirectTV * [SETTING] General>DRM Content>Play DRM-controlled content * [TEST] https://bitmovin.com/demos/drm * [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/ user_pref("media.eme.enabled", false); + // user_pref("browser.eme.ui.enabled", false); /* 2030: disable autoplay of HTML5 media [FF63+] * 0=Allow all, 1=Block non-muted media (default), 5=Block all * [NOTE] You can set exceptions under site permissions From d2510b014d768d867c9f83ba7cded0a1bf280b52 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 23 Dec 2021 23:42:28 +0000 Subject: [PATCH 050/203] move updates to personal updating (app, extensions, ext cache) is not a privacy issue - if you're willing to use Firefox but not trust updating, then I have two bricks to sell you: users who wish to disable it (to check changes first etc) and update in a timely manner, then that is on them - including any prompt fatigue - same goes for extensions: the end-user installed them (and arkenfox only recommends a very select few) - the onus is on the end-user The remaining ones I will deal with later --- user.js | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/user.js b/user.js index 3930e10..3d95610 100644 --- a/user.js +++ b/user.js @@ -139,23 +139,10 @@ user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] /*** [SECTION 0300]: QUIETER FOX ***/ user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!"); /** UPDATES ***/ -/* 0301: disable auto-INSTALLING Firefox updates [NON-WINDOWS] - * [NOTE] You will still get prompts to update, and should do so in a timely manner - * [SETTING] General>Firefox Updates>Check for updates but let you choose to install them ***/ - // user_pref("app.update.auto", false); /* 0302: disable auto-INSTALLING Firefox updates via a background service [FF90+] [WINDOWS] * [SETTING] General>Firefox Updates>Automatically install updates>When Firefox is not running * [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows ***/ user_pref("app.update.background.scheduling.enabled", false); -/* 0303: disable auto-CHECKING for extension and theme updates ***/ - // user_pref("extensions.update.enabled", false); -/* 0304: disable auto-INSTALLING extension and theme updates (after the check in 0303) - * [SETTING] about:addons>Extensions>[cog-wheel-icon]>Update Add-ons Automatically (toggle) ***/ - // user_pref("extensions.update.autoUpdateDefault", false); -/* 0305: disable extension metadata - * used when installing/updating an extension, and in daily background update checks: - * when false, extension detail tabs will have no description ***/ - // user_pref("extensions.getAddons.cache.enabled", false); /* 0306: disable search engine updates (e.g. OpenSearch) * [NOTE] This does not affect Mozilla's built-in or Web Extension search engines ***/ user_pref("browser.search.update", false); @@ -660,7 +647,7 @@ user_pref("media.peerconnection.ice.default_address_only", true); * [NOTE] This is covered by the EME master switch (2022) ***/ // user_pref("media.gmp-widevinecdm.enabled", false); /* 2022: disable all DRM content (EME: Encryption Media Extension) - * Optionally hide the setting which also removes the DRM prompt + * Optionally hide the setting which also disables the DRM prompt * [SETUP-WEB] e.g. Netflix, Amazon Prime, Hulu, HBO, Disney+, Showtime, Starz, DirectTV * [SETTING] General>DRM Content>Play DRM-controlled content * [TEST] https://bitmovin.com/demos/drm @@ -1286,6 +1273,14 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("browser.warnOnQuitShortcut", false); // [FF94+] // user_pref("full-screen-api.warning.delay", 0); // user_pref("full-screen-api.warning.timeout", 0); +/* UPDATES ***/ + // user_pref("app.update.auto", false); // [NON-WINDOWS] disable auto app updates + // [NOTE] You will still get prompts to update, and should do so in a timely manner + // [SETTING] General>Firefox Updates>Check for updates but let you choose to install them + // user_pref("extensions.update.enabled", false); // disable extension and theme update checks + // user_pref("extensions.update.autoUpdateDefault", false); // disable installing extension and theme updates + // [SETTING] about:addons>Extensions>[cog-wheel-icon]>Update Add-ons Automatically (toggle) + // user_pref("extensions.getAddons.cache.enabled", false); // disable extension metadata (extension detail tab) /* APPEARANCE ***/ // user_pref("browser.download.autohideButton", false); // [FF57+] // user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); // [FF68+] allow userChrome/userContent From 7e18f8b47365d0b4155b83809830bfd10735c164 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 24 Dec 2021 06:01:41 +0000 Subject: [PATCH 051/203] tweak 2011 - FF85+ switched to using application regional locale - go to about:support > Internationalization & Localization (almost at the very end) - look at Application > Regional Preferences - add test --- user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 3d95610..4e82ff5 100644 --- a/user.js +++ b/user.js @@ -131,8 +131,9 @@ user_pref("browser.region.update.enabled", false); // [FF79+] * [SETTING] General>Language and Appearance>Language>Choose your preferred language... * [TEST] https://addons.mozilla.org/about ***/ user_pref("intl.accept_languages", "en-US, en"); -/* 0211: use US English locale regardless of the system locale +/* 0211: use en-US locale regardless of the system or region locale * [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1] + * [TEST] https://arkenfox.github.io/TZP/tests/formatting.html * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 ***/ user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] From 2787da7f90b31b19d3549b61a77210b79bd1166b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 24 Dec 2021 06:04:38 +0000 Subject: [PATCH 052/203] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1522a3e..80ceef9 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Also be aware that the `arkenfox user.js` is made specifically for desktop Firef - [wiki](https://github.com/arkenfox/user.js/wiki) - [stickies](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22) - [diffs](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Adiffs) + - [common questions and answers](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Aanswered) ### 🟥 acknowledgments Literally thousands of sources, references and suggestions. Many thanks, and much appreciated. From 7016c2050d20d53242c30eaf0b3beca947e172f6 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 30 Dec 2021 03:15:56 +0000 Subject: [PATCH 053/203] move TLS 1.0/1.1 downgrades to don't bother https://bugzilla.mozilla.org/show_bug.cgi?id=1745678 --- user.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 4e82ff5..804f901 100644 --- a/user.js +++ b/user.js @@ -475,8 +475,6 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 * [4] https://www.ssllabs.com/ssl-pulse/ ***/ user_pref("security.ssl.require_safe_negotiation", true); -/* 1203: reset TLS 1.0 and 1.1 downgrades i.e. session only ***/ -user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] /* 1206: disable TLS1.3 0-RTT (round-trip time) [FF51+] * This data is not forward secret, as it is encrypted solely under keys derived using * the offered PSK. There are no guarantees of non-replay between connections @@ -1108,6 +1106,10 @@ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] * In FF96+ these are listed in about:compat * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] +/* 6010: enforce/reset TLS 1.0/1.1 downgrades to session only + * [NOTE] In FF97+ the TLS 1.0/1.1 downgrade UX was removed + * [TEST] https://tls-v1-1.badssl.com:1010/ ***/ +user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] /* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ // user_pref("dom.caches.enabled", ""); // user_pref("dom.storageManager.enabled", ""); @@ -1150,7 +1152,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("security.ssl3.rsa_aes_128_sha", false); // no PFS // user_pref("security.ssl3.rsa_aes_256_sha", false); // no PFS /* 7004: control TLS versions - * [WHY] Passive fingerprinting. Downgrades are still possible: behind user interaction ***/ + * [WHY] Passive fingerprinting and security ***/ // user_pref("security.tls.version.min", 3); // [DEFAULT: 3] // user_pref("security.tls.version.max", 4); /* 7005: disable SSL session IDs [FF36+] From 06b8d8bfa3a8fd63083be4aaa1afbe0d21df8814 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 7 Jan 2022 17:29:26 +0000 Subject: [PATCH 054/203] move 0362 to don't touch --- user.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 804f901..a6f8472 100644 --- a/user.js +++ b/user.js @@ -219,9 +219,6 @@ user_pref("network.captive-portal-service.enabled", false); // [FF52+] /* 0361: disable Network Connectivity checks [FF65+] * [1] https://bugzilla.mozilla.org/1460537 ***/ user_pref("network.connectivity-service.enabled", false); -/* 0362: enforce disabling of Web Compatibility Reporter [FF56+] - * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla ***/ -user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /*** [SECTION 0400]: SAFE BROWSING (SB) SB has taken many steps to preserve privacy. If required, a full url is never sent @@ -1110,6 +1107,10 @@ user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] * [NOTE] In FF97+ the TLS 1.0/1.1 downgrade UX was removed * [TEST] https://tls-v1-1.badssl.com:1010/ ***/ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] +/* 6011: enforce disabling of Web Compatibility Reporter [FF56+] + * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla + * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ +user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ // user_pref("dom.caches.enabled", ""); // user_pref("dom.storageManager.enabled", ""); From ab7380c93b244992234e33c424f4bd7579f8e53e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 11 Jan 2022 09:21:37 +0000 Subject: [PATCH 055/203] HoM: tweak background request info --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index a6f8472..0d9bf72 100644 --- a/user.js +++ b/user.js @@ -543,8 +543,8 @@ user_pref("dom.security.https_only_mode", true); // [FF76+] /* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/ // user_pref("dom.security.https_only_mode.upgrade_local", true); /* 1246: disable HTTP background requests [FF82+] - * When attempting to upgrade, if the server doesn't respond within 3 seconds, - * Firefox sends HTTP requests in order to check if the server supports HTTPS or not + * When attempting to upgrade, if the server doesn't respond within 3 seconds, Firefox sends + * a top-level HTTP request without path in order to check if the server supports HTTPS or not * This is done to avoid waiting for a timeout which takes 90 seconds * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1642387,1660945 ***/ user_pref("dom.security.https_only_mode_send_http_background_request", false); From 926a2d4ac8ee7971090583c1ff190b714c227bd9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 12 Jan 2022 05:09:17 +0000 Subject: [PATCH 056/203] v96 deprecated, #1325 also tidy the description to reflect that the setting is hidden --- user.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/user.js b/user.js index 0d9bf72..c46cf19 100644 --- a/user.js +++ b/user.js @@ -140,10 +140,6 @@ user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] /*** [SECTION 0300]: QUIETER FOX ***/ user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!"); /** UPDATES ***/ -/* 0302: disable auto-INSTALLING Firefox updates via a background service [FF90+] [WINDOWS] - * [SETTING] General>Firefox Updates>Automatically install updates>When Firefox is not running - * [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows ***/ -user_pref("app.update.background.scheduling.enabled", false); /* 0306: disable search engine updates (e.g. OpenSearch) * [NOTE] This does not affect Mozilla's built-in or Web Extension search engines ***/ user_pref("browser.search.update", false); @@ -1339,6 +1335,12 @@ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is m // 0807: disable location bar contextual suggestions [FF92+] - replaced by new 0807 // [-] https://bugzilla.mozilla.org/1735976 user_pref("browser.urlbar.suggest.quicksuggest", false); +// FF96 +// 0302: disable auto-INSTALLING Firefox updates via a background service + hide the setting [FF90+] [WINDOWS] + // [SETTING] General>Firefox Updates>Automatically install updates>When Firefox is not running + // [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows + // [-] https://bugzilla.mozilla.org/1738983 +user_pref("app.update.background.scheduling.enabled", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From bc2aba3829f6bbe5e5f8739f120cc6f6f251ffba Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 12 Jan 2022 05:25:31 +0000 Subject: [PATCH 057/203] move last update pref to personal --- user.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/user.js b/user.js index c46cf19..a9d2a0e 100644 --- a/user.js +++ b/user.js @@ -139,11 +139,6 @@ user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] /*** [SECTION 0300]: QUIETER FOX ***/ user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!"); -/** UPDATES ***/ -/* 0306: disable search engine updates (e.g. OpenSearch) - * [NOTE] This does not affect Mozilla's built-in or Web Extension search engines ***/ -user_pref("browser.search.update", false); - /** RECOMMENDATIONS ***/ /* 0320: disable recommendation pane in about:addons (uses Google Analytics) ***/ user_pref("extensions.getAddons.showPane", false); // [HIDDEN PREF] @@ -1275,8 +1270,10 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("full-screen-api.warning.timeout", 0); /* UPDATES ***/ // user_pref("app.update.auto", false); // [NON-WINDOWS] disable auto app updates - // [NOTE] You will still get prompts to update, and should do so in a timely manner - // [SETTING] General>Firefox Updates>Check for updates but let you choose to install them + // [NOTE] You will still get prompts to update, and should do so in a timely manner + // [SETTING] General>Firefox Updates>Check for updates but let you choose to install them + // user_pref("browser.search.update", false); // disable search engine updates (e.g. OpenSearch) + // [NOTE] This does not affect Mozilla's built-in or Web Extension search engines // user_pref("extensions.update.enabled", false); // disable extension and theme update checks // user_pref("extensions.update.autoUpdateDefault", false); // disable installing extension and theme updates // [SETTING] about:addons>Extensions>[cog-wheel-icon]>Update Add-ons Automatically (toggle) From 7a4676fe2dcb5bf55974b5cbc82f8353114175d3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 15 Jan 2022 05:25:11 +0000 Subject: [PATCH 058/203] make 1601 setup tag more explicit, closes #1326 --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index a9d2a0e..d321a4f 100644 --- a/user.js +++ b/user.js @@ -573,7 +573,6 @@ user_pref("gfx.font_rendering.opentype_svg.enabled", false); // user_pref("layout.css.font-visibility.trackingprotection", 1); /*** [SECTION 1600]: HEADERS / REFERERS - Expect some breakage e.g. banks: use an extension if you need precise control full URI: https://example.com:8888/foo/bar.html?id=1234 scheme+host+port+path: https://example.com:8888/foo/bar.html scheme+host+port: https://example.com:8888 @@ -582,7 +581,8 @@ user_pref("gfx.font_rendering.opentype_svg.enabled", false); user_pref("_user.js.parrot", "1600 syntax error: the parrot rests in peace!"); /* 1601: control when to send a cross-origin referer * 0=always (default), 1=only if base domains match, 2=only if hosts match - * [SETUP-WEB] Known to cause issues with older modems/routers and some sites e.g vimeo, icloud, instagram ***/ + * [SETUP-WEB] Breakage: older modems/routers and some sites e.g banks, vimeo, icloud, instagram + * If "2" is too strict, then override to "0" and use Smart Referer (Strict mode + add exceptions) ***/ user_pref("network.http.referer.XOriginPolicy", 2); /* 1602: control the amount of cross-origin information to send [FF52+] * 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/ From 09d62d2302c2306f5430a397596667ff167edce7 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 16 Jan 2022 02:31:57 +0000 Subject: [PATCH 059/203] remove 1273: "not Secure" text on insecure sites AF has been using HTTPS-Only mode since v84, the interstitial is more than ample, padlock is still marked as insecure --- user.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/user.js b/user.js index d321a4f..22e5141 100644 --- a/user.js +++ b/user.js @@ -555,8 +555,6 @@ user_pref("browser.ssl_override_behavior", 1); * i.e. it doesn't work for HSTS discrepancies (https://subdomain.preloaded-hsts.badssl.com/) * [TEST] https://expired.badssl.com/ ***/ user_pref("browser.xul.error_pages.expert_bad_cert", true); -/* 1273: display "Not Secure" text on HTTP sites ***/ -user_pref("security.insecure_connection_text.enabled", true); // [FF60+] /*** [SECTION 1400]: FONTS ***/ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); From b5bf2ee0171d6bf4a428f944054f778b47a7deb9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 16 Jan 2022 02:34:21 +0000 Subject: [PATCH 060/203] oophs, add removed item from last commit to 6050 --- user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/user.js b/user.js index 22e5141..0037897 100644 --- a/user.js +++ b/user.js @@ -1107,6 +1107,7 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("privacy.firstparty.isolate.block_post_message", ""); // user_pref("privacy.firstparty.isolate.restrict_opener_access", ""); // user_pref("privacy.firstparty.isolate.use_site", ""); + // user_pref("security.insecure_connection_text.enabled", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From 83b6d64e67d663603ff9e52a5b6627d7927ba86f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 16 Jan 2022 02:36:08 +0000 Subject: [PATCH 061/203] security.insecure_connection_text.enabled AF has been using HTTPS-Only mode since v84, the interstitial is more than ample, padlock is still marked as insecure --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 6aa8c31..9d2ec12 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 11-December-2021 + Last updated: 16-January-2022 Instructions: - [optional] close Firefox and backup your profile @@ -232,6 +232,7 @@ 'privacy.firstparty.isolate.block_post_message', 'privacy.firstparty.isolate.restrict_opener_access', 'privacy.firstparty.isolate.use_site', + 'security.insecure_connection_text.enabled', /* 79-91 */ 'alerts.showFavicons', 'browser.newtabpage.activity-stream.asrouter.providers.snippets', From ac0820a5dc00e04fe14fc2a74ba75e590883293c Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 21 Jan 2022 03:48:06 +0000 Subject: [PATCH 062/203] add last bits about ETP Strict/dFPI, closes #1337 --- user.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 0037897..9c60d66 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 9 December 2021 -* version 96-alpha +* date: 21 January 2021 +* version 96 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -757,11 +757,18 @@ user_pref("extensions.postDownloadThirdPartyPrompt", false); /*** [SECTION 2700]: ETP (ENHANCED TRACKING PROTECTION) ***/ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!"); /* 2701: enable ETP Strict Mode [FF86+] - * [NOTE] ETP Strict Mode enables Total Cookie Protection (TCP) + * ETP Strict Mode enables Total Cookie Protection (TCP) + * [NOTE] Adding site exceptions disables all ETP protections for that site and increases the risk of + * cross-site state tracking e.g. exceptions for SiteA and SiteB means PartyC on both sites is shared * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ user_pref("browser.contentblocking.category", "strict"); +/* 2702: disable ETP web compat features [FF93+] + * [SETUP-HARDEN] Includes skip lists, heuristics (SmartBlock) and automatic grants + * [1] https://blog.mozilla.org/security/2021/07/13/smartblock-v2/ + * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 ***/ + // user_pref("privacy.antitracking.enableWebcompat", false); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); From 10044fcaf77bfe19f2b90c606232f0a9e83401c9 Mon Sep 17 00:00:00 2001 From: fabrizio <fxbrit@tuta.io> Date: Sat, 22 Jan 2022 01:49:48 +0000 Subject: [PATCH 063/203] typos #1342 (#1343) --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 9c60d66..e80a95c 100644 --- a/user.js +++ b/user.js @@ -1,6 +1,6 @@ /****** * name: arkenfox user.js -* date: 21 January 2021 +* date: 21 January 2022 * version 96 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -1089,7 +1089,7 @@ user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] * string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks * [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/ user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] -/* 0607: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ +/* 6007: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /* 6008: enforce no First Party Isolation [FF51+] * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), From cc7ca9d0fa3d4ca4c929ad55c218b9bf3d0daffa Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 29 Jan 2022 05:24:41 +0000 Subject: [PATCH 064/203] cleanup dead images (#1353) --- wikipiki/backup01.png | Bin 5639 -> 0 bytes wikipiki/overview01.png | Bin 19862 -> 0 bytes wikipiki/overview02.png | Bin 11179 -> 0 bytes wikipiki/overview03.png | Bin 18001 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 wikipiki/backup01.png delete mode 100644 wikipiki/overview01.png delete mode 100644 wikipiki/overview02.png delete mode 100644 wikipiki/overview03.png diff --git a/wikipiki/backup01.png b/wikipiki/backup01.png deleted file mode 100644 index e10f1ea228659521464f6508b74a1369f0d4dc03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5639 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 diff --git a/wikipiki/overview01.png b/wikipiki/overview01.png deleted file mode 100644 index 2c8f3b60d732604803fe1bd7eef5ec361d5f790f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19862 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 E2f+KbJOBUy diff --git a/wikipiki/overview02.png b/wikipiki/overview02.png deleted file mode 100644 index 28638fbf1573b81b22378f15a93373b8214557ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11179 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 diff --git a/wikipiki/overview03.png b/wikipiki/overview03.png deleted file mode 100644 index 12197106b94567957dfe1d5d812264aeed982cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18001 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 From 45043537d8318cce73f4d77a7595b3a1d0829487 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 30 Jan 2022 03:20:59 +0000 Subject: [PATCH 065/203] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80ceef9..b76dd2e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A `user.js` is a configuration file that can control hundreds of Firefox setting The `arkenfox user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen). -Everyone, experts included, should at least read the [implementation](https://github.com/arkenfox/user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `user.js` settings. +Everyone, experts included, should at least read the [wiki](https://github.com/arkenfox/user.js/wiki), as it contains important information regarding a few `user.js` settings. Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services. From 0d9de9174ad011d94645660e2780cf1b1f79d14d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 30 Jan 2022 03:23:06 +0000 Subject: [PATCH 066/203] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b76dd2e..38f7293 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ### 🟪 user.js -A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/arkenfox/user.js/wiki/1.1-Overview) wiki page. +A `user.js` is a configuration file that can control Firefox settings - for a more technical breakdown and explanation, you can read more in the [wiki](https://github.com/arkenfox/user.js/wiki/2.1-User.js) ### 🟩 the arkenfox user.js From 4c74f1bffb4242ec613168307566d593c6fb4401 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 30 Jan 2022 08:53:08 +0000 Subject: [PATCH 067/203] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 38f7293..2f33ad9 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The `arkenfox user.js` is a **template** which aims to provide as much privacy a Everyone, experts included, should at least read the [wiki](https://github.com/arkenfox/user.js/wiki), as it contains important information regarding a few `user.js` settings. -Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services. +Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://2019.www.torproject.org/about/torusers.html) calls for it, or for accessing hidden services. Also be aware that the `arkenfox user.js` is made specifically for desktop Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser. From 89bee0e3612be471d427cd81540bd54db1955c9d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 31 Jan 2022 03:08:22 +1300 Subject: [PATCH 068/203] Add files via upload --- wikipiki/rfpCanvas.png | Bin 0 -> 5559 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/rfpCanvas.png diff --git a/wikipiki/rfpCanvas.png b/wikipiki/rfpCanvas.png new file mode 100644 index 0000000000000000000000000000000000000000..97488cc218750d38ec88771429a35f1e323370dd GIT binary patch literal 5559 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 a6<F#%&SYTX4}2nHKv`a0u3p9>;y(aXA*!wb literal 0 HcmV?d00001 From 917e3fe1aad0be2ae93787e4cbaeb33112a6f8c1 Mon Sep 17 00:00:00 2001 From: xfzv <78810647+xfzv@users.noreply.github.com> Date: Sun, 6 Feb 2022 12:23:20 +0000 Subject: [PATCH 069/203] Update wiki link for updater options (#1364) --- updater.bat | 4 ++-- updater.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/updater.bat b/updater.bat index badd778..eef06f0 100644 --- a/updater.bat +++ b/updater.bat @@ -3,8 +3,8 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.15 -REM ## instructions: https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts +REM ## version: 4.16 +REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows SET v=4.15 diff --git a/updater.sh b/updater.sh index a1f7070..8295720 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.2 +## version: 3.3 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac @@ -62,7 +62,7 @@ show_banner() { #### #### ############################################################################" echo -e "${NC}\n" - echo -e "Documentation for this script is available here: ${CYAN}https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts${NC}\n" + echo -e "Documentation for this script is available here: ${CYAN}https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-maclinux${NC}\n" } ######################### From 562127be87ff1115f1d5c7bebd5890efd801b064 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 6 Feb 2022 15:27:50 +0000 Subject: [PATCH 070/203] Update troubleshooting-help.md --- .../ISSUE_TEMPLATE/troubleshooting-help.md | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index 955c367..5e8c1f6 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -7,23 +7,24 @@ assignees: '' --- -Before you proceed... - - Issues will be closed as invalid if you do not [troubleshoot](https://github.com/arkenfox/user.js/wiki/1.4-Troubleshooting), including - - confirming the problem is caused by the `user.js` - - searching the `[Setup` tags in the `user.js` - - Search the GitHub repository. The information you need is most likely here already. - - Note: We do not support forks +<!-- -See also: - - Override Recipes [issue 1080](https://github.com/arkenfox/user.js/issues/1080) - - Extension breakage due to prefs [issue 391](https://github.com/arkenfox/user.js/issues/391) - - Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/arkenfox/user.js/issues/350) +Issues will be closed as invalid if you do not troubleshoot first, or if you ignore the steps in the template. -If you still need help, help us help you by providing relevant information: - - browser version - - Steps to Reproduce (STR) - - actual result - - expected result - - anything else you deem worth mentioning +We do not support forks. + +--> + +https://github.com/arkenfox/user.js/wiki/5.2-Troubleshooting +- [ ] _I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox:_ + +Information + - Browser version & OS: + - Steps to Reproduce (STR): + - Expected result: + - Actual result: + - Console errors and warnings: + - Anything else you deem worth mentioning: + +--- -Clear all of this when you're ready to type. From d61da93aad93904ba3deaf20ead1f5fcde1369cd Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 6 Feb 2022 15:30:25 +0000 Subject: [PATCH 071/203] Update troubleshooting-help.md --- .github/ISSUE_TEMPLATE/troubleshooting-help.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index 5e8c1f6..a27d59e 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -15,10 +15,10 @@ We do not support forks. --> -https://github.com/arkenfox/user.js/wiki/5.2-Troubleshooting -- [ ] _I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox:_ +🟥 https://github.com/arkenfox/user.js/wiki/5.2-Troubleshooting +- [ ] I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox -Information +🟪 INFO - Browser version & OS: - Steps to Reproduce (STR): - Expected result: @@ -27,4 +27,3 @@ Information - Anything else you deem worth mentioning: --- - From 58e2618b9ddb436867f1701733a07ab286eb1b3f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 9 Feb 2022 20:00:43 +0000 Subject: [PATCH 072/203] dom.securecontext.whitelist_onions replaced by dom.securecontext.allowlist_onions - https://bugzilla.mozilla.org/1744006 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 9d2ec12..af6193f 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 16-January-2022 + Last updated: 9-February-2022 Instructions: - [optional] close Firefox and backup your profile @@ -34,6 +34,7 @@ /* DEPRECATED */ /* FF92+ */ 'browser.urlbar.suggest.quicksuggest', // 95 + 'dom.securecontext.whitelist_onions', // 97 'layout.css.font-visibility.level', // 94 'security.ssl3.rsa_des_ede3_sha', // 93 /* FF79-91 */ From a98b73c64e2e0b505efb6b23d34e6c5d90abe2c8 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 14 Feb 2022 00:15:00 +1300 Subject: [PATCH 073/203] v97 (#1346) --- user.js | 64 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/user.js b/user.js index e80a95c..9098913 100644 --- a/user.js +++ b/user.js @@ -1,25 +1,24 @@ /****** -* name: arkenfox user.js -* date: 21 January 2022 -* version 96 -* url: https://github.com/arkenfox/user.js +* name: arkenfox user.js +* date: 12 February 2022 +* version: 97 +* url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt * README: 1. Consider using Tor Browser if it meets your needs or fits your threat model * https://2019.www.torproject.org/about/torusers.html - 2. Required reading: Overview, Backing Up, Implementing, and Maintenance entries + 2. Read the entire wiki * https://github.com/arkenfox/user.js/wiki 3. If you skipped step 2, return to step 2 - 4. Make changes + 4. Make changes in a user-overrides.js * There are often trade-offs and conflicts between security vs privacy vs anti-tracking and these need to be balanced against functionality & convenience & breakage * Some site breakage and unintended consequences will happen. Everyone's experience will differ e.g. some user data is erased on exit (section 2800), change this to suit your needs * While not 100% definitive, search for "[SETUP" tags e.g. third party images/videos not loading on some sites? check 1601 - * Take the wiki link in step 2 and read the Troubleshooting entry 5. Some tag info [SETUP-SECURITY] it's one item, read it [SETUP-WEB] can cause some websites to break @@ -159,7 +158,7 @@ user_pref("datareporting.policy.dataSubmissionEnabled", false); * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send technical... data ***/ user_pref("datareporting.healthreport.uploadEnabled", false); /* 0332: disable telemetry - * The "unified" pref affects the behaviour of the "enabled" pref + * The "unified" pref affects the behavior of the "enabled" pref * - If "unified" is false then "enabled" controls the telemetry module * - If "unified" is true then "enabled" only controls whether to record extended data * [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2] @@ -235,16 +234,16 @@ user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!"); * To verify the safety of certain executable files, Firefox may submit some information about the * file, including the name, origin, size and a cryptographic hash of the contents, to the Google * Safe Browsing service which helps Firefox determine whether or not the file should be blocked - * [SETUP-SECURITY] If you do not understand this, or you want this protection, then override it ***/ + * [SETUP-SECURITY] If you do not understand this, or you want this protection, then override this ***/ user_pref("browser.safebrowsing.downloads.remote.enabled", false); -user_pref("browser.safebrowsing.downloads.remote.url", ""); + // user_pref("browser.safebrowsing.downloads.remote.url", ""); // Defense-in-depth /* 0404: disable SB checks for unwanted software * [SETTING] Privacy & Security>Security>... "Warn you about unwanted and uncommon software" ***/ // user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false); // user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false); /* 0405: disable "ignore this warning" on SB warnings [FF45+] * If clicked, it bypasses the block for that session. This is a means for admins to enforce SB - * [TEST] see github wiki APPENDIX A: Test Sites: Section 5 + * [TEST] see https://github.com/arkenfox/user.js/wiki/Appendix-A-Test-Sites#-mozilla * [1] https://bugzilla.mozilla.org/1226490 ***/ // user_pref("browser.safebrowsing.allowOverride", false); @@ -263,7 +262,9 @@ user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: fals /* 0604: disable link-mouseover opening connection to linked server * [1] https://news.slashdot.org/story/15/08/14/2321202/how-to-quash-firefoxs-silent-requests ***/ user_pref("network.http.speculative-parallel-limit", 0); -/* 0605: enforce no "Hyperlink Auditing" (click tracking) +/* 0605: disable mousedown speculative connections on bookmarks and history [FF98+] ***/ +user_pref("browser.places.speculativeConnect.enabled", false); +/* 0610: enforce no "Hyperlink Auditing" (click tracking) * [1] https://www.bleepingcomputer.com/news/software/major-browsers-to-prevent-disabling-of-click-tracking-privacy-risk/ ***/ // user_pref("browser.send_pings", false); // [DEFAULT: false] @@ -306,7 +307,7 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] * [WARNING] If false, this will break the fallback for some security features * [SETUP-CHROME] If you use a proxy and you understand the security impact * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1732792,1733994,1733481 ***/ - // user_pref("network.proxy.allow_bypass", false); // [HIDDEN PREF] + // user_pref("network.proxy.allow_bypass", false); // [HIDDEN PREF FF95-96] /* 0710: disable DNS-over-HTTPS (DoH) rollout [FF60+] * 0=off by default, 2=TRR (Trusted Recursive Resolver) first, 3=TRR only, 5=explicitly off * see "doh-rollout.home-region": USA Feb 2020, Canada July 2021 [3] @@ -323,8 +324,7 @@ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); * Examples: "secretplace,com", "secretplace/com", "secretplace com", "secret place.com" * [NOTE] This does not affect explicit user action such as using search buttons in the * dropdown, or using keyword search shortcuts you configure in options (e.g. "d" for DuckDuckGo) - * [SETUP-CHROME] If you don't, or rarely, type URLs, or you use a default search - * engine that respects privacy, then you probably don't need this ***/ + * [SETUP-CHROME] Override this if you trust and use a privacy respecting search engine ***/ user_pref("keyword.enabled", false); /* 0802: disable location bar domain guessing * domain guessing intercepts DNS "hostname not found errors" and resends a @@ -338,7 +338,7 @@ user_pref("browser.fixup.alternate.enabled", false); user_pref("browser.urlbar.trimURLs", false); /* 0804: disable live search suggestions * [NOTE] Both must be true for the location bar to work - * [SETUP-CHROME] Change these if you trust and use a privacy respecting search engine + * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine * [SETTING] Search>Provide search suggestions | Show search suggestions in address bar results ***/ user_pref("browser.search.suggest.enabled", false); user_pref("browser.urlbar.suggest.searches", false); @@ -452,11 +452,11 @@ user_pref("browser.shell.shortcutFavicons", false); user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); /** SSL (Secure Sockets Layer) / TLS (Transport Layer Security) ***/ /* 1201: require safe negotiation - * Blocks connections (SSL_ERROR_UNSAFE_NEGOTIATION) to servers that don't support RFC 5746 [2] - * as they're potentially vulnerable to a MiTM attack [3]. A server without RFC 5746 can be - * safe from the attack if it disables renegotiations but the problem is that the browser can't - * know that. Setting this pref to true is the only way for the browser to ensure there will be - * no unsafe renegotiations on the channel between the browser and the server. + * Blocks connections to servers that don't support RFC 5746 [2] as they're potentially vulnerable to a + * MiTM attack [3]. A server without RFC 5746 can be safe from the attack if it disables renegotiations + * but the problem is that the browser can't know that. Setting this pref to true is the only way for the + * browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server + * [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site? * [STATS] SSL Labs (July 2021) reports over 99% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 @@ -580,7 +580,7 @@ user_pref("_user.js.parrot", "1600 syntax error: the parrot rests in peace!"); /* 1601: control when to send a cross-origin referer * 0=always (default), 1=only if base domains match, 2=only if hosts match * [SETUP-WEB] Breakage: older modems/routers and some sites e.g banks, vimeo, icloud, instagram - * If "2" is too strict, then override to "0" and use Smart Referer (Strict mode + add exceptions) ***/ + * If "2" is too strict, then override to "0" and use Smart Referer extension (Strict mode + add exceptions) ***/ user_pref("network.http.referer.XOriginPolicy", 2); /* 1602: control the amount of cross-origin information to send [FF52+] * 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/ @@ -598,7 +598,7 @@ user_pref("_user.js.parrot", "1700 syntax error: the parrot's bit the dust!"); * [SETTING] General>Tabs>Enable Container Tabs ***/ user_pref("privacy.userContext.enabled", true); user_pref("privacy.userContext.ui.enabled", true); -/* 1702: set behaviour on "+ Tab" button to display container menu on left click [FF74+] +/* 1702: set behavior on "+ Tab" button to display container menu on left click [FF74+] * [NOTE] The menu is always shown on long press and right click * [SETTING] General>Tabs>Enable Container Tabs>Settings>Select a container for each new tab ***/ // user_pref("privacy.userContext.newTabContainerOnLeftClick.enabled", true); @@ -766,8 +766,10 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin user_pref("browser.contentblocking.category", "strict"); /* 2702: disable ETP web compat features [FF93+] * [SETUP-HARDEN] Includes skip lists, heuristics (SmartBlock) and automatic grants + * Opener Heuristics are granted for 30 days and Redirect Heuristics for 15 minutes, see [3] * [1] https://blog.mozilla.org/security/2021/07/13/smartblock-v2/ - * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 ***/ + * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 + * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ // user_pref("privacy.antitracking.enableWebcompat", false); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); @@ -781,7 +783,6 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" * sharedWorkers and serviceWorkers. serviceWorkers require an "Allow" permission * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow - * If using FPI the syntax must be https://example.com/^firstPartyDomain=example.com * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ user_pref("network.cookie.lifetimePolicy", 2); /* 2802: delete cache on exit [FF96+] @@ -952,7 +953,7 @@ user_pref("browser.link.open_newwindow", 3); // [DEFAULT: 3] * [1] https://searchfox.org/mozilla-central/source/dom/tests/browser/browser_test_new_window_from_content.js ***/ user_pref("browser.link.open_newwindow.restriction", 0); /* 4520: disable WebGL (Web Graphics Library) - * [SETUP-WEB] If you need it then enable it. RFP still randomizes canvas for naive scripts ***/ + * [SETUP-WEB] If you need it then override it. RFP still randomizes canvas for naive scripts ***/ user_pref("webgl.disabled", true); /*** [SECTION 5000]: OPTIONAL OPSEC @@ -1029,8 +1030,8 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("browser.download.folderList", 2); /*** [SECTION 5500]: OPTIONAL HARDENING - Not recommended. Keep in mind that these can cause breakage and performance - issues, are mostly fingerpintable, and the threat model is practically zero + Not recommended. Overriding these can cause breakage and performance issues, + they are mostly fingerprintable, and the threat model is practically nonexistent ***/ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); /* 5501: disable MathML (Mathematical Markup Language) [FF51+] @@ -1125,7 +1126,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("geo.enabled", false); // user_pref("full-screen-api.enabled", false); // user_pref("browser.cache.offline.enable", false); - // user_pref("dom.vr.enabled", false); + // user_pref("dom.vr.enabled", false); // [DEFAULT: false FF97+] /* 7002: set default permissions * Location, Camera, Microphone, Notifications [FF58+] Virtual Reality [FF73+] * 0=always ask (default), 1=allow, 2=block @@ -1159,7 +1160,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF] /* 7006: onions * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ - // user_pref("dom.securecontext.whitelist_onions", true); // 1382359 // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 // user_pref("network.http.referer.hideOnionSource", true); // 1305144 /* 7007: referers @@ -1344,6 +1344,10 @@ user_pref("browser.urlbar.suggest.quicksuggest", false); // [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows // [-] https://bugzilla.mozilla.org/1738983 user_pref("app.update.background.scheduling.enabled", false); +// FF97 +// 7006: onions - replaced by new 7006 "allowlist" + // [-] https://bugzilla.mozilla.org/1744006 + // user_pref("dom.securecontext.whitelist_onions", true); // 1382359 // ***/ /* END: internal custom pref to test for syntax errors ***/ From 41468d0d0bf287589e9ab2c012aa0eded1388610 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 13 Feb 2022 13:11:26 +0000 Subject: [PATCH 074/203] Update troubleshooting-help.md --- .github/ISSUE_TEMPLATE/troubleshooting-help.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index a27d59e..ea7f92f 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -11,12 +11,14 @@ assignees: '' Issues will be closed as invalid if you do not troubleshoot first, or if you ignore the steps in the template. -We do not support forks. +We do not support forks or no-longer supported releases. --> + 🟥 https://github.com/arkenfox/user.js/wiki/5.2-Troubleshooting - [ ] I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox + - _unchecked issues ~~may~~ will closed as invalid_ 🟪 INFO - Browser version & OS: From 4bd17611df133b8ab3077df495ab7197c1844eea Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 13 Feb 2022 13:11:55 +0000 Subject: [PATCH 075/203] Update troubleshooting-help.md --- .github/ISSUE_TEMPLATE/troubleshooting-help.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index ea7f92f..ee0a8c7 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -18,7 +18,7 @@ We do not support forks or no-longer supported releases. 🟥 https://github.com/arkenfox/user.js/wiki/5.2-Troubleshooting - [ ] I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox - - _unchecked issues ~~may~~ will closed as invalid_ + - _unchecked issues ~~may~~ will be closed as invalid_ 🟪 INFO - Browser version & OS: From ba052105de3c4be2e34cf103f08b2f28c6d5b496 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 14 Feb 2022 05:38:13 +1300 Subject: [PATCH 076/203] Add files via upload --- wikipiki/rfpCanvasException.png | Bin 0 -> 7765 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/rfpCanvasException.png diff --git a/wikipiki/rfpCanvasException.png b/wikipiki/rfpCanvasException.png new file mode 100644 index 0000000000000000000000000000000000000000..6889f80924c3cff60b656dd56ec70f266ebd04f1 GIT binary patch literal 7765 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 O1LUPuq-rJ1LjMP~Z54L_ literal 0 HcmV?d00001 From 382b9181dfb9d4d6ae010af526e7410383137fd5 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 20 Feb 2022 19:00:32 +1300 Subject: [PATCH 077/203] Add files via upload --- wikipiki/uboCustom.png | Bin 0 -> 12439 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/uboCustom.png diff --git a/wikipiki/uboCustom.png b/wikipiki/uboCustom.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8c443aa48bb8c40ea41cc80e259d4a554a5e62 GIT binary patch literal 12439 zcmbt)cT`hP*KQOAR1g&b=_(dFN>h51-g^fH>Agcj6#)SO=`~d8CDMBrq9CCYAXF&< zVn9j=5E5?qz4u%9UGM$wU3abfN6tApGqca^J+t>b`<aQ>(om$l$#4?@08lC`z0m;x zu7ZirwdAD4YvdDB6XNZLyOOaN0C0=?@^=N0mGb}qxT)zNC#R)l@8<31W$)(xP+3my zp}VJ>t%I`-0N_6l*0s~q-KLemE*;6LehN)db<?3Cf2boH8+t$S8Rw%LcT_$-Dww0u z?!7B7e~s}+{wI?7_|VTZ+T0W|H)qM#9~H)j7k!Eu!mWaeoMt+(n<IoqxFoXb5L`b> z)<aH_rX-*(6iQJp%W`)m9Qu85b)8o_?B)}9z#a1X_m8~rY*zp$!Q$dvk9)|v09X7c zZ;=Cf)U$hDFhyNZ?Z{@DT?zeorN=w*wJLe&eSkDDUbX}vt#Bn2obgN-kbe#EcG%i# z4WPvXc>6qLa}p2=KFI`K0hp#dqPdcv2zW?s^XU!1UJOt*Y7iq2FnR&FZ>#!U1Tf13 zc%f`)s|5Jg4CsN~xm5=srvSXr{uIFhxCR2e{lUiO5BQh~xUX<vD8A2Ca|g*uv{YuD zc<U1p`7l#*9uG1@LtYkkm@*yLec^Xk-(^Yj_620p^M?sitsMRW0P+)Qh}s_F{b9Fj zU@+nMrrVZ0JKdxgkFBiM2pgl7?$Q9js(0`>ft#<MAykYs)P+#^boZLQ#jSiFY^-e^ zm2@K@e|z5W(EZXj@=jJxn*Jo9}%bLC$G7KWv^;z~9;+;=}#m}*rm9F1U!uZX@ z6tA7E^!++gD`px^y7AF!VKYJTy!qC}IrHS>@5)xKMx6K8wC{PuzsdT1$Y1<8S~iJe z;OWH0``^plI1<TaA;33B$t$2lo-%W5l4I59cZ|Gyeq#ZEgLb#xDRy#_Q2X%JQNN2l zDZFC-Q$VP#a*_uCVDaV&uij9-6qFnQc#|K-`AvrLsP_SP4=Gdc^@ZMB=Wm5S%0Btt zCwoWs=KD}4&$k>^A7t4hN4_z0zU7;eW)|$xwvSA9zs=jH-*Q{Ro$Blzd2TOzN7#*P zGC#<v-#wcDbj2#hh%KI+E;HifQLoaqd$CU*{`_=b`>|@GkkU(?7`=!3O3Vimo>xVp z%oN%Z#eM+zKb%K)D85VytJ9X4qG*(BEqlfAQK9hG*n97nSqZfH*<+p!3=*G(3y@=# z_Ehr;l5)@&JzEdR1im}J;2rFjt$odXBiVYm_Hh+O<sid1gDR5tXpHq}t>3kKVe&mU zgs=I@K77X_qhzFJq%o^h_K@j`;NAHfuWpch)b4x!IJr!<;aS_=)9(+g_+LgDDRHyS z+)JS5y94?p_x;tAd(m?I&s)D-Rj&Q2H*s%5VZv31ZJWD1TTqFCE&1pCd#5@wkreKS zTt6b#!R!6&0_%+Hj}A<4f~}-IzMkm*X4e^VRH5Ivvmv-aYLme)qhFMzvshN3cULIE zM7Fx1Ne7}GRYoo7lO-||POGe1TwRzt$zV@sk9B}-dAHqNOl8qXA2Xa7-d5a7-y%8k zqo9nW35R~NW2eu4K=#0n-tPe<L#>2<GL{~y_u|z{R0cAWD$`Bhh_i_^kS1~HW~xf+ zvs6Y-KE3jal8U8@Tl$Ck!+Htj7P>(-3i<-NYvnhl(kk^Uz*;C>MqRsdv9hQNyD~RD zsjtDt_-In&ezks0xv$#!wU%oggAZ?6)7SfRKXRh1jPwZ;`u?nTWG>K`vpoaP+#V}Y zQC=V-C!iu=Sg&)KVk<?qmf>-d<E?Q6$zGa%7#y>7e~;rg2V;q#TI)+2GpCBQ^faSN zrAqBeMO3G74Z0Lu(kb6=j0?Lh166r$_FT~}0d^gX)Sc5^EWKGut1cmmso||~DrPKb zf8*EfTDqH&+hq}&tL9d^6wrx0V+!KK>)~C_N->HQMx^x=Pe>6Ium|D;LLP47%zRM9 zzP6lszqDNOyVQ5-s~;0v$Hj}L72*`AK06GWtvy+D8FU#edPe%}(KA)`9rfKT9re}{ zjuJ67F*WGOuaUx$nM|Q<iI;GGWHvGzp1s`s*2Le0yQ!?H#YVYq-K4~Lx2eN5!bHTl z*ht^Ryk4OiT>W&Wy}G^hZfUDVvPNa@j9ve?{idHy<<0cpHfBi?HBBx}LGSFW=<J#Y zYWjDRJClRjg5vNJWRy{Jw=0=Vn1j6<JnxGdh%RNpa(1PH29DCU`Rt5F?~Kk0tTj;& zb9{FI>t;_X+R@pydW9c;ij7wNFwC1S$(zkMxcH-UUBw&YVZI8Sz<{&sv-{9x2*|GR zuETEBLf$XIJdRvr0k5(CA95?&8{<;9@={+oEms9=%4vq#H6q#gtoafRtKr|8i~TCF z@Al{<k0m|x)+E=&UoG)38C(8()zkc=d04aGE!Q$)SuTX_;{65iVjNH!`t*t&NpzS@ znCVsA2{7<ccf6D+!sfVc4lVOJzg31tCgDT%hmGFqNA^Gde5rnfMP|SfVGg$=w1T&0 z#>n1nzKiV-rg$C^6=4`D74QDZh++I?x{%-af}Gd#o3l4*Z<ey{UTTU!cvOTqB`bIx z#phqO3ARZM^4c2znl=I(DLbn&iSTmP2)jCWEuW(gqke;b-&zCFW$^tlcMm9l^&Lf& z(w6hy;}%VmR{Ny!I_0m-9nLb^&rc7i{hr3(4CrI-vwO@pE<FBeR?du*MdLt;QyrM} zC$U2);K_hMG51F6$LHl=I@BoD7PCcjX|sGEy6{VgcD@WxO8nv>Tk%Lexyf$FZqwFx zxXLD?jxgXF+swz3O7_#K{!7($W1gE$vL#!3ChTxdvN}5(L)-3==pm7`%3Q7y^so9M z#Ftk&dwCb=dwus-lbVVnRSkKVjW#>097XEHJpvFn*J!SDMH-M+iMPZwak@-vR-z5l zYl1tU0o9$tEP97N^fq2`Lfz88xe*bBT7aX?HI4X;mmA-mMS>Y6X`*9l?jz{ZX+mb% z7yLIEquhqNGZ#`C$}7LOz8|%nu-)EV;>k6=omP>)nSR@qa&EqXa@n8(jX9P_@THHi zBih58<XVfm#alXTN`Jye#H94T>K*Bw=?U*nEH=J_pSX_iGJ-me1^-MVOgpf6$)8;a z{VV$F)3(z#IAvTtR;nhtV*4Zw=VD&1;o^aYl1z}`$=Gf;!CR-MnI|OlbP{H`P>Q#q ztX%}~o*xgTFr|K6&fsr0_csCS+t?e+SQbjrdEd{Vs#UT{R$pd2W<E#Rtb;6tY~3uJ zsg-G)<}b<dnVluzxgvs<Do0S<I6&o4@2A83_J_%2yMxis;8bu>Fz@NYTSQ?K2x$#l zcBFFKYrEsUIw5}%ixle+gP9$)cpuauHmD6-46`7jmM%NqJK}`oNlj>bPJ32OtC>^l zF0iu^WQ*Nq%zXu0Jn9VCr@fe&&J~eZ>^uazVF$37W!lAH&*ym9aQmF!^WEwW%?`^W zX|&9o++x(Ulqq3hc5flXvBxj}aC|`#OBxYAN=U>cP|00S$V?cHq>M!6zLpdb`7Py% z-##yu8+||eESHW@NEoi6qvZ=enMT23;~C=x=?Ce_-7bN}_?;dUJp?h>H^|cU(_i4F z#gPFH-RrmD$GlgxOr^OV_%MY1!v3@tqdQiLOQugwzPLt`ad>Vmz=I&-&4<=XI_dxb z@F@Tg8V&%QUJ&ow0D#X60AS}W03ezH0MNN5Sq>-w08jgr-^l3s&;MBjx$EnH*xR>s zR-(J6wfY61y)JvTgiR#{`lKnfA^-MU(T2tEiMiS-SzlEWKiqBjQQR4?^WtWf8H+)L zDLH@Bl7=(iw$g-!v~u~_!3%NmkK!wj?<pxsGv4EWrh_DSu*@NAN4YeAV0BYJ<OCf% zRX1W!(L_ud{V9&wjtGnaV-c=}M7#o!-nvG-7F@o1=zW#g^RXMmN7?89O;J7yBar=q zur$|(Bd860&MnKs#D4vHR^}wtSV8#pk{Mqot#7&a7q^sm5g1BJ@t`aif5!Fr@rS<l z_&H}`{E=?9iAl{4l-2aS%kRgR0tV5k!Yd?&Wqv0vx;#81ZQkYD>3o)j(xH;<eek^A z^9@M)_L8N9{C3X>Jg>8ok5D&=Y>){jb?OO~xj#W!R$Q#Cu5K8p5gXmA-XAHit3>{D zAeK(gG9>K-;Oqeefm+)GtFL_2#1eKm;=28s;HYC3jjPBwM`HW4(@`@2PRaK_w5~qy z<99Y{h@_xbkpTorcrOKoJS)Dc+cggjy+Xo~!6@kugzt|P(B33{SA++A)FA4uRNj*U zIUa{thTPmFMOMa>QG6<VI~I0}ex7O!DfgU;vX|8o9Ui6V8rZdy0aUbW<^Tk7U)q+~ zoOrn-dgZ??+-5En1L&0ZZjiSgT&M{nL0gVa&dij|&mW5V)mT(lS0{ZfD+_aU?NWKS zC_VU@zPh2|ejL45`;+p5)xxS7>iK#*z6cV)M_4?rYt?j7^!&CXASQ;Pj6*l+J~JBM z8B|-#Ha$OIK|*%Bvh}oLVnWCJ+&{IVLPN(L9@MGmFjr@nn&DpxZ)j-1355`(9M%ST zMBVdq`mTmDN+&E>@Xek;&JvKjQ@s)wb6y~eE-k+5+5A{=+nDB&_9h_cyWRUS*VYYN zi6gBFF88LUrtQ86h3T1GIF;17dD4A)`f}V}UInq!@(KzSAs4%y1`J}ppZNs@%BnO3 z16$-7U)A_the?2r9oGi^js_VS^|Z9U-lAimp`j_JvotFscFS$yLq@Gp1S)Ur8nSz_ zZbEP4zN-O@V*XL+?lf8ge4X(^KWb<x`3X%IxcG{8GrNZhF!bRoMN5aUT#nf>_2)L; z>E*h~_vsxjb~P(8AFF0mnzzTtY1K3TF>MVtv(_kbr<aU%tT$ZIduPg_dF*w-fyCL- z<mmLQf4M5wZl;R<axkK(Sc^RI{`&(FF)=X{+mp*gTlsmP9nmWvo1&o!hUMS>@&R{S zudAr4j(d$t6it?Pdv!uhb2cHCHFIp@HC%^u_S3vW3;<xPD|%ay6qcV#hvHJ6ur=P6 z=_vS2FJRKV;938~;ey}^>EW0INw&A!QJZt|po1?5JS!Wr6ZcBECF1Al;e~R&t$O+s zmxY!&p&Bp3Ih2IA*%j(I0&ediB!{Re&mC=Ek#?IX&)X!!o|ne6vd=8oU8Iw~S!8<Q z4h!<t4YklHKj^V_81$7W5&<H6o&&kJ??Uf`sLImZ(hWvEuIW0=AJ9sq-T&pS>^Rj+ zLvpmeg$7EX?lxmA77|Nd9pg3lYRt;sS(y6hSXQ;D4(Law+d9Kh#_<<<i2P<lzRBie zA<m#h7QE-juWgh-P~xFaGCIgHZf6Pe5(2@*=aq<6>`r(aQhlp8oZXEt?HaGIht3Uq zOaeOVhv7hwhI3UAl&Epmu~l*LBIJh>R;qV)=2$msCOb2;Ae=10{$L$6kEl`H+p01a z5VZe-&D-`mE@^87K|5dpg9)sa`)km7M379P6IerEzf=t*D<B}Cr|&Z))cpj)Vlrxq zhxzy)*Gc~Eky1*Myf}AD`l_7#%yFvhL2Am8Gj=(J<2bU}8mb{AD0tSb#lx;+ViI$Y zdT;9QYFg-?-&|_xd3koKgpmH3Ysw6y!!*i(8*YH~8TmZG`77-Jx#^Iuld5}?Alm#J z!q9l2{B%2G%_o6ns_j+<qc)_lHJ~p2ZH4E}JiVkxN0Qx*gCNsq;sqEkyC1W68BO@A z5^@&~T(WRT?JH?c{L7rs3pbD~>K6FWa_qMC>B(F(y-0Q{`2KDeF<krVtZ)Y+a@)Et zuu-WPDFTGcKkGW|r^Cg)x8-?1+ElZe&hM&^U3KuO<*aA%XdfU<?^sFbjuk?m;9ieR zJH!ZI6PnyUCNKEeZJw`b2$`Yl4*q^;S5kYf-I6#3BsRmmj(j`2ChqE?gtyS$51JhE zj;v&2BSrdAk(4S%ty=wpx(Rd-WUC-(Aut>Y9H!eTo<1O7<pD0zSnW+H7MUDn(C&cE zBUf+uFdmH;B<oDHu($*oI2Bh^YMur$1dZnMb;=?mZpATMVAp?QTl%sNk8vBr=|s;X z&he44R4(-z_syJL`U7z!569fb;c=V5x~QCst!*T)W!G<7&p3s+7>{b}iLcRFq8JN! z(`&hMuhZmb>UzW)H*dyxZ>S`bQn^wMg_BWv-hzdbDQ+*cp0P-6zs}Q<3hv-s0WmT# z*fbh&zV!G|SR_Xdj+t~}dkUuVtt=D**(4nxdB-@d-->msd*$(Y-KrSWDmlNN)joWR z^W4b6(DdB4?_Z!=AMz5Qt$YD$+ze?pGYzNA8ANCN{Wx<W+~diGAF)gK&TFvRy{fO0 z^&+IvfHzPUmwO?dN;p=JO$D!0Y#iHcK7lG%tWMsSmInKRI{i`n@QYEfWQF<#;hRa; z#Zp)g2ecY<T}3S^C8fq;zG_iyA<rbYY2gJ-z#)198d6*or9mpOh;$mn09|xzVk&93 z=&eV$K1Bd${^A;zo5+UWVeuM%dO>9|qRMQ8tx>aIz11fT+uokM6$HcKK#5_;bB5x! zrqjDmVPCpL|3>rX;uIJ{O1UG^LC(i5EN+2P=YRdoTgJ9td5bPvpKqtcehpVNyO8qP zX~@dT@<F)NUWRm1${0_~ZQubD^$tb6TqMQ*DWTRHT2@{@$MZH<%5raK1GDix`k3l( zy`7Vgy;cf$T0xeeLm^SZ;#Kr&KXhtps*31>6-`YVY>I;|!1oX{hl$feOr23=o9x!c zupzKx2}~6yf(kluk0q`jDa1gqwe_y#kdo>3!;{os{(AL_N*lQ04>_wJe5>4#--;ro zO3wA49gZsL=q&Q$=Y-@kkJD9^b#*(JO^w-_!`Rw~^lR+n+9YQ2e`n)|sE*Dn_%DVr zuksF4w5M2%xUkIni=Wz4#d|Nh)LVEIDk|ZAkv28+Dl6B<MkK)7hwv7lD7g0!6G1&S zagP0awRGOCTJuF@Sx|A?YXqFfO_`x|wW!$5X++~g<aW`#rK(bHi51*ab0=2HZH8Gh zXzj4zDJT>N=3b>uftdc0`9*8rNjDnArtdPtm^myi*}$}lS+qHJSc7L!&~HVvK*ovd z`qr_D4~7Ho=gB}^PdO!ntCq3eA8XUU5zV{@3R<*!CGh^oTS|ue8$PP%=ci*JCNiq{ z38E8~AcBvbtDSH}kW<KI_y^}f95qMhj;}J|g=!$f_DP}##>6+ZOm~jhCO-)}o=dlo z$cJIgJLiA<wX)gr8Lm28e=>X9ZO$|}8FlRL(;#7Xnk8vfXg~|3U=U*T+eOiWo;yd) zd6K~B?7`1)2CaK#JGP_WG%FFsG@~K;Dw2v<y#2PkNtLbt{!v=-UNTAF+<MxK&}XeE zbS+pl@P|@ncbZKufs5)6B7n~C%i|4r#*R|W$Eb}i0mo96!?5X5l?RiZ-Al@pgsr&` z5yuEj{9gyAy*b?y4a}~JtNq`_Y<kv<<&=!qGS$^Cbtalev%+F-rJyBVY-xFUtLdP& zu&{-Wu5SIM31(;SR+N=_rW|&*1)i$(yjV1kXNBkxL70OBcGyv(ATm;chL$jJ)b~9= zjBw;|ad*gD&BpMCu=j{jRo|az&QZ&Jq<M2?-k+1RcE{E$$LP~m)>${GSf5>Ux>zX6 zpj5I`QUq-&h@DfHERCRjz0qcVPK=ute)zz(Ag+ZGWuctJ67_&5-?t-8$D<^tngu4* z#S|ms+Egn<3*21~L_x0Yzpv!JZE~9ZBLVEpm*<ldQeWQXLa*<!qg(K};UH3&scY*T zCMX^Wn?9v950lNz><uR?Z))OQK_iLkiH3AZZn5+ar$bHxA964?Hu^A#`+pgA@jG_3 zXr1`_NRHI$?}`j@3arl~iGOf^o}zDnjsrQA<GW=A=l4K)pj~>XIB0rdVZmwMabphX z@aFS}HaSV3LcK1YswkK9YUr}3++3IYX7xgwnHMom#xT<f{_f%kOl1z;r2^ab3as~R zQ`i@+NdVDI%~18LlLO4R^vrDdX$5+YZgg7|iTRF<Gw!Ku6IYzT{-iYapmW>K`fcj| z*t{*a=H;OJ?;6Q4z4j*j@A&DO=OZMMLvzDI)sC4%LkN;1x{xL3SzcU*VKce{k)Pn3 zGes1RiFi~gG!wj0<P5TK{zKkuT9cTV$RHJ5MFhQ1ILa(whe*^S%UR+dD$3J#u!O_J z8+bKRw^YMvET27&S!_@U4-;E6yXf{Tp5r-D&k`J0BzLCDgt_koCYdEU1=^P7AZ&Bs zt!S7>?xi`2f)ONghBbl?=O?ul)zv5(jB{h|7y*AAc|OFYYOYz&NXhCt&IRH23TjN+ zU#)&obL?HlYl3|$hI*+lGDjHh_C#6gOIk$+quTnJN>Aw{1AJ2}&8Sns)(`qcR&Q+l zN;ou`@k8<|u_?BGnEQBoQI-!8^9!nC_F+M3S9p5r;Q8RAfnjimE;s5;zL`L|zK$Th z25$mW^X!#t#j0I^arzgr&Ahs2=R%LjG^Sm~T%o!si&gibs}As}iZWAP<ugYNK+gS; zaP?Gr(p=%!)Z$wDwkclYMzGsr!X%$zFk5wtDxXbLHxR13%sxh)({Jl$aMsmsw#K{X z?-*Bdomq@^+!{5rg_b8dN_yguHIZlXP@lep&N-bwuK#WcN6?}yr5GO#A49$sa(E5C zHISNcl%+7c5U8)MO+v#crgNE{5dXQjxYX?Z^(G}I0$mg*esC!wA_K03g}AqG1Q7x| z;o&mL&zG&w-kg=@1=o<V2KERop3o=|0r_N^_RE?LLw&HP=`I0pi6X*ycXd8?b{!d+ zM3fBunrPpuS=v5V>Ssjo>46Qj8!gcUBm0~)2@G#uUMk$Oj~)EnYR=cyqE)JympE-w zUTJ75X!{FY^KhQnE5=t{)P1_Bt|@y|q<NcLvDYu;%MB!}u1-^Tz)*wZ0DHA%>)ihL zv+L+t549|p3`xTwjzFD=8q;~Y2I~Pb$*X^C(JgMRPM_Z|#+!4(Kd&_7Pp2o&HX<>z zQTI+PYfb}ooI`!G_Dna>6GN%lh}Z(xbOUkAX8>}AH_m@vXYWVIw=SDK&t4+X$aJ|G zl4UK8W3g8^Zeb?!_Wm4`h0pM`4i_0ZzBd}q6tGLX%}P)pYN2iQ`&wQ|xM`h~zvs!{ zS2a?xbK1F<?>?>w3buq?jPV6~xJ9Llgb=8SY05q@U#%{rcxI;h0x@d&c*ph<#}ws8 z*@=$tuUYDnOSAUn0X?q2hCZ0EV0=wnxoBD$x+dmyQT{`cr`Z;M+2Tfs=Jb~9pLcdH zO0|m=*f}fkl^%{xC{Z5gLhM`{hJ+YJ<#kKcCjPFXc}{!6`X!iz*91fGMWVQlL#LEK z&2ZH1Ahnfi09iZ5z`_IrMEA3DKeCn);Pc5B@m_<zolCd6-0JHanwpMtEqJ`MH#cqJ z{qmi|Z*1sX(@?yDr@|u}94-KIgij!dS)#b!6|#0VLDLK$Z}tE&Z<+r0{6;=D0!Ab( zbU0sZR0hpD3;!#HFZc8I&AvJYm9@iXTBqDpJ9T80!cQsmF02Gjd#I`kTo3;?9t@Bz zjSn`K{#W)t;hFlOb(Q3UAG2lKlv3|Q=LXi$vGNLt-xg|gsrdcM2Jxmp4HxUMxY&o% zHZ}-qOTThnah^z!YVz+SPRFO_9sXfgWq<HmbmR}G^J(9aW<9KbBp2EB`}B9_Q0Eyj zpQmIJ*CQb_^`2ChD*B%^%kI&;pws;ez0=(4l07FEm+3|)II;ZIc1gCY&YL&aBK(-^ z=bX>BONE7AS?+@v8(L56g3tFAF(|ku{tQ#PwA!pr>`P@AA&1wzqLj$B{6O*DyW}Il zaS*jjisBz8=pUZq-<Tls%RScrx1xVzH~zELe-{12H~nv%$Um+Av*=$e)&HgF!wkfW zF1^Ob2IAN@fS(>*<m2+uepyUOB)SxR95s;>9}I=e^EjWsRE~z_<!BafLn_`n*j3v^ z->edA<P9Gp0RXl@1zy`YplGeEsg9*q;y$L3?r3IL;b}>CIfe3&zphPgfyXwkE={CF z?0pr2qq5P=U=1X&q?d_NemYdRT{&dKV`P=VW{w&fLLZ)(81&x50joCZOqSs~hM|q4 zlK}<9eQ1C=t*C$kReBX!!wj^cP@alozgj|u_a_UB;iA{nl670L%%q{n2fOiGD(VZ* zDj6EZo-0RZwnn}<tJoDesJlm<oZ_|aT75v#^s-)07!yi-(J+veUpnkt@k>-5M=WkB zmW|e=7AKA=Flg&D>pN|0^SD#Sn3zS7wEBR<$71dFWzVCG8gS|N?>?f`d9I?+iDfDF zSf6aC1^e;BsFZrsECR?{b4$B(gS^~Hp!ug`ZCUWJI7rDtOw+VV=hv3E36U|Bru)19 zaC{MX9%0G#?%Pi$B%#Dm7`@Y{UZHJXgg*|D2~6ULtLW6u)Chq>+7zHlGr!HSpFt%u zl_i?vI?B_MNGCn;J6Rv|B5t<d_IHVfS)>+C*wJ)jp$w1#)6K^;vNz5K4+rYER%xp0 zL^M5tCGRab?9o>rs-;aMr^^zji0rB~-<U%)Jl2<0-}*Oqo@Oe7^`@tIhpx8)Muz9_ z^<vT7&}A$2u}N1dO8PmF!d~XChm&~lSME5ZI#7gYA9wRe4V><dW5^ct&TB*UbYJ9a z5T}IP?|U@j;4#Vm3G8B?k>7&kD^@;}D)|ALI<*j4^yrnj^f~|cnqStGE+qtg)Szcs zG2S@YdF<56<}UeFUOxBHzCILGVt<hqa~x3xM%Gf`{6e}m&OA@e@Z%zjr_)MKNDe!! zyM&7m?C`7Ai7b#vx>~S37WU1Fvm)9-+VHm<gg71l&Het3qy10M{J#|ar~CaQFw}LN zZ;C$nCHmFb^g=qOJ`Y3X(B%Z5KQdme6eUbw6imsvqpDvy{h1XL^xh)!k0m9x)9_bY zQ{`?POhknjKV1^Yw`?MjGigywuj6{X)+U~)NRZ=kSVJO9Vr3PnnzVyre4;EDwNyyJ z<0=~)^>N3{Q+~_fqHjdyAan<4j5~>)A`-1iOd2QLf(0gNUO#m}!uZh(#wBae$|uT1 z;HILkKHlPC%}yL-_q7O^79Kv$#hf8_>0A0uyq%i*DvpkIkJ;E3En?%F*hS|HP2D;N z(3ti0pKX|#Y=@u3(+7Kzu!}aJJgZ9%1iW{FW&F04R@T#|i{cmcD_<Lo+rOEXbo961 z0eG@17{|hl5^_0MS8jMuj2ExuN(J17b1U_n7g98gZ3o-Hb+p`xX<dAm9*@GA?A#0` zdiAjWx2f0t*_`!Vkm7h2-O9!V$!@y-qq<icX>8`h?o~x^qt_arr?SVEK=@5<{axE# zQV@F>3?*={lgeD`xrQESgqm8wESyw+JnITTdif@Jut#JqI`wQ|N(9{eH^Z1S8z>ze ztvr7@gKfn0ZNY{3Xl0cJor3SB5+6z<xjO&o$FXbZSp6QJXFmK2`u2+$p=JzyMibLh zGcvyBu=zQq8d7b#7pITtm}?~66Ywf7q)W+aQ8y5BY(8w%xVL3+N?eQ10wp*dA6C-? z07u}lx#BS0ByT-85!t2rU&JhmyJDGN)9I-LTHK{p<z-QvwKPu!pN7t+i8AL*;Z%B~ zDb)@({%zY4mTJgqv1CeqAnEI6M6+ua#AA0m(-oJ1O0h9*U9#dJZfmPZRNlp@-xXx+ z=k-TC#9<|gghkF%&mZjcJC;d|$AwL%D@@bxzBYsl4e>vQdAI3REh;jkzV?a!>KzxK zScO{zamK;~m7;YU8pt@mmY0iEotl^;>_-5AmBCx!q$BHLo1g}dE(S-<Bdrw*P8QT> z2P&H!1tW2}@~=CGj(-ZOeS%r-%6QGs!e%G{0N0K&5%FUUyzi>Pob!YtBN98&!=c<S zG{1J^@Z>J7(9E>bWhj%!s$ox5N=_2%1al32sGO^jmJDYE9P7~%h_x+P%C|~ZG2Uo# z$?IU<p|Np%lDK!`+B3FIFAlO>NqG`ma*@5-TTr}*+WxM<JZH{bZWJ5C^*)pEan<1L zGRou+vVra&+|ht1@1jxsk`3#?v!#TyGt%a6{`*@^0j8$e@ywO^Pf3UYqS{iCZiOP3 zvhg|a-Ac+=1+*l;PG!}G$%g+x+tYG<L4M<5iU6?Gz<3zb;1$2f*UrMtpI#}on_H|; zT$%9AnyJZW9|ZBP#_z|cij!tkR7;;JrLAV=J|a@>PG=IdKdo4~+Ga+Ru)7lZQLGx% z)y+$V85yg<tpdH~ZP@c^#Qc1N-(J`^Xc!SCc&C54I6f;}a1(9l^HJU1>FOLN&c4ds znZ%skfP;>D_1wUO!8pbu0=_d(4FYi^lIu|zJT|11=28{D^;{S+<n$33ci=TIcVFBm zqhc9PWP=I;y{kxXGpzvef9AYC5_i<xt)pP0H!Y_jn_Wzve>;4u)$?e&RHCEGs;kwX zYvz_b1OR$`c-9f9%dlDYf53ati1Q<$_IMt<5V6)tO5(mh@}q`w+g=xrU7Pr(MZ|mS z%eJ8FWysARzI(Yh^G{5bW~BlP1#rZC`eCq*X@Uy{sQl!m3^IXeRs6X#B)%ZZITEk+ zMkUwrwSp_fps#syY04*Z`3J$G?LVU?cK__f{XHa%%?G+ezj!U{rhviK9a*R{f~XnQ zAU;7W1_8tIqI!I$d~jn<r~<+ETL}g3h(J45u6ND>zPQ>{Lu-2{j(~ZzqvG8qG{@V3 zGf7tnf@#8VU@*Qu;=qfTyJu@F8>Cf#w=Maema2bmu%SjjDb;zn`gV}Xo~=bL0rf+z zk>?c`+}E5|{&|Y=o{248!)X$?DbCga;h8Mfy%;sW+vilu%oBUhG!1x=K~>Y~z232| zU*qbtOz$&~!Ht>5OYH@1?H<1O%d_k=&hyKBfQU1tH$cuOEvC5<zYve85%D{Mc?BR{ z?BM8SBK@E)@V<1x0^)7n`LzN2U}~M?sa2Y=OV)HS=J(9xZ%|f!RP~g*{Ce<!b;tZq z1K%bnP5heU&!dX^XPS_0DibEUUkwZ!#r_txnP!=-!0T~`{;pnk46P$A%2GOXaCJ;# z*7JxJNELo65kXVv)tTFw9U0^d>5@J?EoW=4G`6O{&Q1iwP|(3aU<w4vuUgM+`2A6n zW(Z;~(dG<tatAxQPe{2BI<-p|1wPQ}0HMzt1C(`gXx)bO2B1R0^FE<L*grCu1-D7y zo)Vw^1I(^X$$<-~@ip&Q>vJvKQ72DuLh4&YEaXg}vIv0D%3?0~WSrgLkcRDehp~-p zq>^bc55d{_2H(JD+%{_NWl_A@HR9JBu!Id{W=DM+7P#h-z^R-1Zb92g$`!wPCj@yT z1hYhwM+F`yl@lSDxp12nM~<fdnTQWI!1!yHI(wGbKq}MRfufZztv@4efJc3LNZVG+ zr$2F=7D?Nw9f)%ojY^n$)6W2XeX!H8r@2LH1El@QaN0swB6`ok@)OpnYv|1&m+V~1 zpP*?vN4M~9QBTXXea=a3s-J_)BQ@NM5RDO3+4r=KCaK)+>~tUHv|5cg!`9qR?_C=s za5j?y?x-8Q$|ImfrScjFCtM_P&mr;>d^hXOK^R~9CPbAvZqbi*gGIKJY^VBf?o2N* z-8pF<VR8q_a(KKQVtUTZ)!RU~jIlFNB<wtD$%T#WJX#1MAM?dG$%N!xS!JFK9z6_} zV*Lf&Jg<g0!45YMBP?fDQ|-tlz)y`M*Lbu>Yv(*rdjhbF+U@QoG2CInn#+rImf<9B zLqr8kU04cfX(<6V=KPsA*IP*|HGH%c5e*WQxxOF&o~8Q@wd#S;B>F15rEs?TsX$PI zpRw*s=(@`Eazpe`wXd1}0FOZzN*y6I96&s>lf1g)@<C4<-8S)qH`P(HMys#r3U8un zvuY$hGt;uLN~5)byg9y3ug<UbcOWM6w9{Xxyl4VF-{2Pg+uRUX-{4>wwm`RCS*6-& z{xnil$ZTUKuqx)4OC&J6{QRB+sQg{Pu<Qah6hS}8Px86{Cg`GW^Yy%H8eye=|I7() zt2W=*9fY-S_lRxgcqKA>Kw;->uDBCKoPxr{-Sau;5H0zRTE*V;1?zc95?58|eB|Dl zKsj3oW-NSdENC};xyfmXlq8t+qmLR+Y&6P)>D1IR9gM_-hx)lt@u{VmK_<Vey5aZq zz)}J~z~l!lLM(eS%-MvUPHHJu(FM}}7Xp?|QhMx?k7f61LbS%@7bAekNfb5peYY%o zS|>>5YN`_C`o%X@^(Eh@+}ZR8f|FMe^<VEHoAi*5g-#|N_w>rMc5bS3*Eav%x#=LA zb4FS(8l$OY;M%z6gB-Qs*>&0Q>~yvxLv-L6xr#rY0MKU&+@qN$X<Yg<*F1K&g)s2z zK2wbIZ@=N_V0O}Eh_`>C+PQUyjx|MIN*ONYa=7%W1xK9tQ|fekb%#3}^jj^RERw9i zGW97v7F`1a1Bio%Ijd-bep{T6H>2=dVf5@h2?u+7bmvE*A=Mi%V7=aIcI7kopKNK@ zTWCx=^qNVi6g#DD8R3kz6P_tKHL>c-o~w;0`>R77;&Ib05Oj_R6n)Jk8Ji{SV_=*; zx-ROjTEEt~p5Zb7tkbqEYC`CG<dRAK>G_oQLXir)5%r*Mq=1kjq%|(C{HJQIln*1e z>>j72FK&!uk#{6>E{y*cNG!aJEDv2@dCYg>i=Lr&o3Fv^k27I+!?P0fzd?#HyL)}l z7Cbrho1hP5ns3QYdTA;)4J^Ohgmj*iOVx`W7*a`i=I;IRa=Mdu1stpvRZB&ffwLh` z-G@XM4n9v7-MAk4!ngvRn-@|O-{SbRgZ9^h-vFpfY2Nd;d>)@8@vXf8nq*<^<aDdO z)nB8AK7CG0Yr<mfJlBiZtVPjlR5@$fOlt*CnqM;1V3k;`<$smTLA}>)e+rEReNJ8V zv9x}rKIjchup_t4@}P*uO18L!7^LycwOI5U-Q4rw4<5`FwP@b+tHC}{ZAR}4E&U1- zBbm|mso|Lu(u{Ue%l67itYt}BG~D#+3iWxPF-ovz%Conav6zgzC6t!wAxYduZc5TZ zl+OA3zRwJXGDWq8pivsIYFAde&Dq_mds66mr{#0!?pkxQS--VFoiv`|*9IdEOZY|< zz(ukOh=s$>!Jw-Rn)NRGpsEu$zA%`vEioDa|7z#{?9H+46T@cg$+^40v4rac3i8v8 z+rP#4K=zhtikbeuoZ7lzQlr_U@Wi^?&EgWx&=WO<I={};_j5>$Y3`=a{l5aRqgjfh z%*pF{RPRCvry&*tNZ%~ySck~%?~t^=uSx_i(>R`#FD80NrMv_LN@!@9V3e>a2EFGy z!SgXig$IFh$|RIvKA5u3=>)qy_!Ndxb904v9xJ%h<$%sS@wHSr$Z<MmQEw%B`UG6g z3`*9{!S`d1b!NSa^NttvoqDd$@AMzRirlS1S}#Lu;^>0#3nZ{ZY0F!e6iv&%?DG&1 zGx3Sp^Z3tP=-#8tV<!)t_d2nPscD4N%d<V9HMepa8ymA;?cMn2lusM4JFnSEPGMo; zKMCVjTMzx+yS*8gCsn*%R?NDCNvtnH(O6@c?!EtdN`86ywXK7mpZ}^Cu;LxR-7x3; zPj>39zLN6CT9oba<9`Xv`d_s^fBK~5<D=eVb6jLZlzGSXQhs>kZRU!Tlh^<B=BgOz zxXQ%D#H{((Xs$$Mfn1d1QpfW^f`z&H+L^?cPqVWgO<KYwWm}q;2(FBVs1M_p5nC@1 zJNww4Ley<$9fiR);;zf|WWd(gBgf0LO)|GyOD~T%k<)1Yf9BPpODh*tfNqtFdrrX! R5u!+dvb@Hd8rioW{s+z(rN96H literal 0 HcmV?d00001 From 6b6ed86b6ceb5b4eb99d0132509abeebff74b5ca Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 24 Feb 2022 00:26:15 +0000 Subject: [PATCH 078/203] Update troubleshooting-help.md --- .github/ISSUE_TEMPLATE/troubleshooting-help.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index ee0a8c7..b5c7564 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -9,7 +9,7 @@ assignees: '' <!-- -Issues will be closed as invalid if you do not troubleshoot first, or if you ignore the steps in the template. +Issues will be closed as invalid if you do not troubleshoot first, or if you ignore the required info in the template. We do not support forks or no-longer supported releases. @@ -20,7 +20,7 @@ We do not support forks or no-longer supported releases. - [ ] I have read the troubleshooting guide, done the checks and confirmed this is caused by arkenfox - _unchecked issues ~~may~~ will be closed as invalid_ -🟪 INFO +🟪 REQUIRED INFO - Browser version & OS: - Steps to Reproduce (STR): - Expected result: From 4f3f789f2837547d0e65609d96cbf8d5510390d6 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 25 Feb 2022 23:15:01 +1300 Subject: [PATCH 079/203] Add files via upload --- wikipiki/smartReferer.png | Bin 0 -> 37523 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/smartReferer.png diff --git a/wikipiki/smartReferer.png b/wikipiki/smartReferer.png new file mode 100644 index 0000000000000000000000000000000000000000..c64b93a9c6b9368a9fe7c92087f577fbd1c1914e GIT binary patch literal 37523 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 Mr>mdKI;Vst0E*AI)Bpeg literal 0 HcmV?d00001 From 0d83307b14760c9231f67e6f1e99bfbd7b586650 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 27 Feb 2022 10:44:04 +0000 Subject: [PATCH 080/203] Update troubleshooting-help.md --- .github/ISSUE_TEMPLATE/troubleshooting-help.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/troubleshooting-help.md b/.github/ISSUE_TEMPLATE/troubleshooting-help.md index b5c7564..b8c876b 100644 --- a/.github/ISSUE_TEMPLATE/troubleshooting-help.md +++ b/.github/ISSUE_TEMPLATE/troubleshooting-help.md @@ -1,7 +1,7 @@ --- name: Troubleshooting help about: Ask for help to solve problems with user.js -title: '' +title: 'follow instructions or this will be closed as invalid' labels: '' assignees: '' From d9af90d05f477e5e25f8d9f545eeb7fe0a235d2a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 10 Mar 2022 13:44:10 +1300 Subject: [PATCH 081/203] v98 (#1372) --- user.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/user.js b/user.js index 9098913..ac2aae3 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 12 February 2022 -* version: 97 +* date: 10 March 2022 +* version: 98 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -514,8 +514,11 @@ user_pref("security.family_safety.mode", 0); * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16206 ***/ user_pref("security.cert_pinning.enforcement_level", 2); /* 1224: enable CRLite [FF73+] - * In FF84+ it covers valid certs and in mode 2 doesn't fall back to OCSP - * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985 + * 0 = disabled + * 1 = consult CRLite but only collect telemetry (default) + * 2 = consult CRLite and enforce both "Revoked" and "Not Revoked" results + * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (FF99+) + * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071 * [2] https://blog.mozilla.org/security/tag/crlite/ ***/ user_pref("security.remote_settings.crlite_filters.enabled", true); user_pref("security.pki.crlite_mode", 2); @@ -646,7 +649,7 @@ user_pref("media.eme.enabled", false); // user_pref("media.autoplay.default", 5); /* 2031: disable autoplay of HTML5 media if you interacted with the site [FF78+] * 0=sticky (default), 1=transient, 2=user - * Firefox's Autoplay Policy Documentation [PDF] is linked below via SUMO + * Firefox's Autoplay Policy Documentation (PDF) is linked below via SUMO * [NOTE] If you have trouble with some video sites, then add an exception (2030) * [1] https://support.mozilla.org/questions/1293231 ***/ user_pref("media.autoplay.blocking_policy", 2); @@ -851,6 +854,8 @@ user_pref("privacy.sanitize.timeSpan", 0); 418986 - limit window.screen & CSS media queries (FF41) [TEST] https://arkenfox.github.io/TZP/tzp.html#screen 1281949 - spoof screen orientation (FF50) + 1281963 - hide the contents of navigator.plugins and navigator.mimeTypes (FF50) + FF53: fixes GetSupportedNames in nsMimeTypeArray and nsPluginArray (1324044) 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) 1217238 - reduce precision of time exposed by javascript (FF55) @@ -1211,7 +1216,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] -/* 7017: disable service workers [FF32, FF44-compat] +/* 7017: disable service workers * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2710) * or blocked with TCP in 3rd parties (FF95 or lower) ***/ // user_pref("dom.serviceWorkers.enabled", false); @@ -1236,7 +1241,7 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan // user_pref("dom.enable_performance", false); // user_pref("dom.enable_resource_timing", false); // user_pref("dom.gamepad.enabled", false); - // user_pref("dom.netinfo.enabled", false); + // user_pref("dom.netinfo.enabled", false); // [DEFAULT: false NON-ANDROID: false ANDROID FF99+] // user_pref("dom.webaudio.enabled", false); /* 8002: disable other ***/ // user_pref("browser.display.use_document_fonts", 0); @@ -1303,7 +1308,7 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("browser.urlbar.decodeURLsOnCopy", true); // see bugzilla 1320061 [FF53+] // user_pref("general.autoScroll", false); // middle-click enabling auto-scrolling [DEFAULT: false on Linux] // user_pref("ui.key.menuAccessKey", 0); // disable alt key toggling the menu bar [RESTART] - // user_pref("view_source.tab", false); // view "page/selection source" in a new window [FF68+, FF59 and under] + // user_pref("view_source.tab", false); // view "page/selection source" in a new window [FF68+] /* UX FEATURES ***/ user_pref("browser.messaging-system.whatsNewPanel.enabled", false); // What's New toolbar icon [FF69+] // user_pref("extensions.pocket.enabled", false); // Pocket Account [FF46+] From e00497fd513b479ae7684b3cddbf6d8dd3b521bf Mon Sep 17 00:00:00 2001 From: matthias-z <11502234+matthias-z@users.noreply.github.com> Date: Sat, 19 Mar 2022 07:46:08 +0000 Subject: [PATCH 082/203] Fix newline issue when downloading files in updater.sh (#1397) --- updater.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/updater.sh b/updater.sh index 8295720..fcdc29f 100755 --- a/updater.sh +++ b/updater.sh @@ -106,7 +106,7 @@ Optional Arguments: download_file() { # expects URL as argument ($1) declare -r tf=$(mktemp) - $DOWNLOAD_METHOD "${tf}" "$1" && echo "$tf" || echo '' # return the temp-filename or empty string on error + $DOWNLOAD_METHOD "${tf}" "$1" &>/dev/null && echo "$tf" || echo '' # return the temp-filename or empty string on error } open_file() { # expects one argument: file_path From b4225baaf2f8d15f856efbaea7c936d218e5ed7d Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sat, 19 Mar 2022 07:47:46 +0000 Subject: [PATCH 083/203] Update updater.sh --- updater.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/updater.sh b/updater.sh index fcdc29f..74f378c 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.3 +## version: 3.4 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac From 64bc683c3f98da0d28240a36664493c841836bbe Mon Sep 17 00:00:00 2001 From: i-c-u-p <96894903+i-c-u-p@users.noreply.github.com> Date: Fri, 8 Apr 2022 07:03:43 +0000 Subject: [PATCH 084/203] Made prefsCleaner.sh executable (#1416) Changed permissions of prefsCleaner.sh from 644 to 755 to be able to run it via "./prefsCleaner.sh" with out first executing "chmod +x prefsCleaner.sh". --- prefsCleaner.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 prefsCleaner.sh diff --git a/prefsCleaner.sh b/prefsCleaner.sh old mode 100644 new mode 100755 From 81561840a189d4e84751eceae205292a50f0c0e2 Mon Sep 17 00:00:00 2001 From: fxbrit <fxbrit@tuta.io> Date: Fri, 8 Apr 2022 11:43:39 +0200 Subject: [PATCH 085/203] deprecate security.csp.enable --- user.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/user.js b/user.js index ac2aae3..e3944d8 100644 --- a/user.js +++ b/user.js @@ -1081,9 +1081,6 @@ user_pref("extensions.blocklist.enabled", true); // [DEFAULT: true] /* 6002: enforce no referer spoofing * [WHY] Spoofing can affect CSRF (Cross-Site Request Forgery) protections ***/ user_pref("network.http.referer.spoofSource", false); // [DEFAULT: false] -/* 6003: enforce CSP (Content Security Policy) - * [1] https://developer.mozilla.org/docs/Web/HTTP/CSP ***/ -user_pref("security.csp.enable", true); // [DEFAULT: true] /* 6004: enforce a security delay on some confirmation dialogs such as install, open/save * [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/ user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] From eb98f06d69610644db94860f3927e97b24b2d1ca Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 8 Apr 2022 21:28:16 +0000 Subject: [PATCH 086/203] security.csp.enable https://bugzilla.mozilla.org/1754301 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index af6193f..29df9cd 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 9-February-2022 + Last updated: 8-April-2022 Instructions: - [optional] close Firefox and backup your profile @@ -36,6 +36,7 @@ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 'layout.css.font-visibility.level', // 94 + 'security.csp.enable', // 99 'security.ssl3.rsa_des_ede3_sha', // 93 /* FF79-91 */ 'browser.cache.offline.storage.enable', From 9aae0a62b03150e1c09d434ea51fe196751e9a75 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 8 Apr 2022 21:30:22 +0000 Subject: [PATCH 087/203] tidy deprecated, misc RFP changes --- user.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index e3944d8..c0cce4a 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 10 March 2022 -* version: 98 +* date: 9 April 2022 +* version: 99 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -854,7 +854,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 418986 - limit window.screen & CSS media queries (FF41) [TEST] https://arkenfox.github.io/TZP/tzp.html#screen 1281949 - spoof screen orientation (FF50) - 1281963 - hide the contents of navigator.plugins and navigator.mimeTypes (FF50) + 1281963 - hide the contents of navigator.plugins and navigator.mimeTypes (FF50-99) FF53: fixes GetSupportedNames in nsMimeTypeArray and nsPluginArray (1324044) 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) @@ -899,6 +899,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 1461454 - spoof smooth=true and powerEfficient=false for supported media in MediaCapabilities (FF82) FF91+ 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) + 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable privacy.resistFingerprinting [FF41+] @@ -1350,6 +1351,11 @@ user_pref("app.update.background.scheduling.enabled", false); // 7006: onions - replaced by new 7006 "allowlist" // [-] https://bugzilla.mozilla.org/1744006 // user_pref("dom.securecontext.whitelist_onions", true); // 1382359 +// FF99 +// 6003: enforce CSP (Content Security Policy) + // [1] https://developer.mozilla.org/docs/Web/HTTP/CSP + // [-] https://bugzilla.mozilla.org/1754301 +user_pref("security.csp.enable", true); // [DEFAULT: true] // ***/ /* END: internal custom pref to test for syntax errors ***/ From 7ff46e02dd33588c0298f7432e7742c53765d2ea Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 5 May 2022 23:33:44 +0000 Subject: [PATCH 088/203] v100 deprecated https://bugzilla.mozilla.org/1752621 - replaced with network.http.http2* prefs --- scratchpad-scripts/arkenfox-cleanup.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 29df9cd..4d8c4ec 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 8-April-2022 + Last updated: 5-May-2022 Instructions: - [optional] close Firefox and backup your profile @@ -35,6 +35,10 @@ /* FF92+ */ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 + 'network.http.spdy.enabled', // 100 + 'network.http.spdy.enabled.deps', + 'network.http.spdy.enabled.http2', + 'network.http.spdy.websockets', 'layout.css.font-visibility.level', // 94 'security.csp.enable', // 99 'security.ssl3.rsa_des_ede3_sha', // 93 From d6b26e75588bcd4311251c68912d3c77b8c6e996 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 10 May 2022 06:49:38 +1200 Subject: [PATCH 089/203] v100 (#1423) --- user.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/user.js b/user.js index c0cce4a..814b424 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 9 April 2022 -* version: 99 +* date: 9 May 2022 +* version: 100 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -741,6 +741,9 @@ user_pref("browser.download.useDownloadDir", false); user_pref("browser.download.alwaysOpenPanel", false); /* 2653: disable adding downloads to the system's "recent documents" list ***/ user_pref("browser.download.manager.addToRecentDocs", false); +/* 2654: enable user interaction for security by always asking how to handle new mimetypes [FF101+] + * [SETTING] General>Files and Applications>What should Firefox do with other files ***/ +user_pref("browser.download.always_ask_before_handling_new_types", true); /** EXTENSIONS ***/ /* 2660: lock down allowed extension directories @@ -1174,13 +1177,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] Defaults are fine. They can be overridden by a site-controlled Referrer Policy ***/ // user_pref("network.http.referer.defaultPolicy", 2); // [DEFAULT: 2] // user_pref("network.http.referer.defaultPolicy.pbmode", 2); // [DEFAULT: 2] -/* 7009: disable HTTP2 - * [WHY] Passive fingerprinting. ~50% of sites use HTTP2 [1] - * [1] https://w3techs.com/technologies/details/ce-http2/all/all ***/ - // user_pref("network.http.spdy.enabled", false); - // user_pref("network.http.spdy.enabled.deps", false); - // user_pref("network.http.spdy.enabled.http2", false); - // user_pref("network.http.spdy.websockets", false); // [FF65+] /* 7010: disable HTTP Alternative Services [FF37+] * [WHY] Already isolated with network partitioning (FF85+) ***/ // user_pref("network.http.altsvc.enabled", false); @@ -1209,6 +1205,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ // user_pref("network.cookie.cookieBehavior", 5); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); + // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.partition.network_state.ocsp_cache", true); // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); @@ -1356,6 +1353,15 @@ user_pref("app.update.background.scheduling.enabled", false); // [1] https://developer.mozilla.org/docs/Web/HTTP/CSP // [-] https://bugzilla.mozilla.org/1754301 user_pref("security.csp.enable", true); // [DEFAULT: true] +// FF100 +// 7009: disable HTTP2 - replaced by network.http.http2* prefs + // [WHY] Passive fingerprinting. ~50% of sites use HTTP2 [1] + // [1] https://w3techs.com/technologies/details/ce-http2/all/all + // [-] https://bugzilla.mozilla.org/1752621 + // user_pref("network.http.spdy.enabled", false); + // user_pref("network.http.spdy.enabled.deps", false); + // user_pref("network.http.spdy.enabled.http2", false); + // user_pref("network.http.spdy.websockets", false); // [FF65+] // ***/ /* END: internal custom pref to test for syntax errors ***/ From ea139e3ef8810149d90df8637984f2444282745e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 9 May 2022 19:25:18 +0000 Subject: [PATCH 090/203] long standing defaults - FF79+ dom.targetBlankNoOpener.enabled - https://bugzilla.mozilla.org/show_bug.cgi?id=1522083 - FF86+ privacy.window.name.update.enabled - https://bugzilla.mozilla.org/show_bug.cgi?id=1685089 --- scratchpad-scripts/arkenfox-cleanup.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 4d8c4ec..411d790 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -235,9 +235,11 @@ 'dom.caches.enabled', 'dom.storageManager.enabled', 'dom.storage_access.enabled', + 'dom.targetBlankNoOpener.enabled', 'privacy.firstparty.isolate.block_post_message', 'privacy.firstparty.isolate.restrict_opener_access', 'privacy.firstparty.isolate.use_site', + 'privacy.window.name.update.enabled', 'security.insecure_connection_text.enabled', /* 79-91 */ 'alerts.showFavicons', From 662eddbc2124d9d09774da7d5bc385f45c287c0d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 1 Jun 2022 13:51:19 +0000 Subject: [PATCH 091/203] network.cookie.thirdparty --- scratchpad-scripts/arkenfox-cleanup.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 411d790..042649d 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -32,7 +32,7 @@ const aPREFS = [ /* DEPRECATED */ - /* FF92+ */ + /* 92-102 */ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 'network.http.spdy.enabled', // 100 @@ -42,7 +42,7 @@ 'layout.css.font-visibility.level', // 94 'security.csp.enable', // 99 'security.ssl3.rsa_des_ede3_sha', // 93 - /* FF79-91 */ + /* 79-91 */ 'browser.cache.offline.storage.enable', 'browser.download.hide_plugins_without_extensions', 'browser.library.activity-stream.enabled', @@ -231,11 +231,13 @@ 'toolkit.telemetry.unifiedIsOptIn', /* REMOVED */ - /* 92+ */ + /* 92-102 */ 'dom.caches.enabled', 'dom.storageManager.enabled', 'dom.storage_access.enabled', 'dom.targetBlankNoOpener.enabled', + 'network.cookie.thirdparty.sessionOnly', + 'network.cookie.thirdparty.nonsecureSessionOnly', 'privacy.firstparty.isolate.block_post_message', 'privacy.firstparty.isolate.restrict_opener_access', 'privacy.firstparty.isolate.use_site', From 36c942e88743b6535dbd80fa17232ede357b14e1 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Jun 2022 12:45:13 +0000 Subject: [PATCH 092/203] browser.urlbar.trimURLs see #1473 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 042649d..1216e70 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 5-May-2022 + Last updated: 12-June-2022 Instructions: - [optional] close Firefox and backup your profile @@ -232,6 +232,7 @@ /* REMOVED */ /* 92-102 */ + 'browser.urlbar.trimURLs', 'dom.caches.enabled', 'dom.storageManager.enabled', 'dom.storage_access.enabled', From 1a899966a911dc2b69a808095ac7836bef5e214b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 13 Jun 2022 01:38:27 +1200 Subject: [PATCH 093/203] v101 (#1443) --- user.js | 62 +++++++++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/user.js b/user.js index 814b424..fdd7e63 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 9 May 2022 -* version: 100 +* date: 12 June 2022 +* version: 101 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -310,10 +310,10 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] // user_pref("network.proxy.allow_bypass", false); // [HIDDEN PREF FF95-96] /* 0710: disable DNS-over-HTTPS (DoH) rollout [FF60+] * 0=off by default, 2=TRR (Trusted Recursive Resolver) first, 3=TRR only, 5=explicitly off - * see "doh-rollout.home-region": USA Feb 2020, Canada July 2021 [3] + * see "doh-rollout.home-region": USA 2019, Canada 2021, Russia/Ukraine 2022 [3] * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/ * [2] https://wiki.mozilla.org/Security/DOH-resolver-policy - * [3] https://blog.mozilla.org/mozilla/news/firefox-by-default-dns-over-https-rollout-in-canada/ + * [3] https://support.mozilla.org/en-US/kb/firefox-dns-over-https * [4] https://www.eff.org/deeplinks/2020/12/dns-doh-and-odoh-oh-my-year-review-2020 ***/ // user_pref("network.trr.mode", 5); @@ -334,8 +334,6 @@ user_pref("keyword.enabled", false); * intend to), can leak sensitive data (e.g. query strings: e.g. Princeton attack), * and is a security risk (e.g. common typos & malicious sites set up to exploit this) ***/ user_pref("browser.fixup.alternate.enabled", false); -/* 0803: display all parts of the url in the location bar ***/ -user_pref("browser.urlbar.trimURLs", false); /* 0804: disable live search suggestions * [NOTE] Both must be true for the location bar to work * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine @@ -400,7 +398,8 @@ user_pref("security.password_lifetime", 5); // [DEFAULT: 30] * can leak in cross-site forms *and* be spoofed * [NOTE] Username & password is still available when you enter the field * [SETTING] Privacy & Security>Logins and Passwords>Autofill logins and passwords - * [1] https://freedom-to-tinker.com/2017/12/27/no-boundaries-for-user-identities-web-trackers-exploit-browser-login-managers/ ***/ + * [1] https://freedom-to-tinker.com/2017/12/27/no-boundaries-for-user-identities-web-trackers-exploit-browser-login-managers/ + * [2] https://homes.esat.kuleuven.be/~asenol/leaky-forms/ ***/ user_pref("signon.autofillForms", false); /* 0904: disable formless login capture for Password Manager [FF51+] ***/ user_pref("signon.formlessCapture.enabled", false); @@ -493,14 +492,6 @@ user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1] user_pref("security.OCSP.require", true); /** CERTS / HPKP (HTTP Public Key Pinning) ***/ -/* 1220: disable or limit SHA-1 certificates - * 0 = allow all - * 1 = block all - * 3 = only allow locally-added roots (e.g. anti-virus) (default) - * 4 = only allow locally-added roots or for certs in 2015 and earlier - * [SETUP-CHROME] If you have problems, update your software: SHA-1 is obsolete - * [1] https://blog.mozilla.org/security/2016/10/18/phasing-out-sha-1-on-the-public-web/ ***/ -user_pref("security.pki.sha1_enforcement_level", 1); /* 1221: disable Windows 8.1's Microsoft Family Safety cert [FF50+] [WINDOWS] * 0=disable detecting Family Safety mode and importing the root * 1=only attempt to detect Family Safety mode (don't import the root) @@ -515,9 +506,9 @@ user_pref("security.family_safety.mode", 0); user_pref("security.cert_pinning.enforcement_level", 2); /* 1224: enable CRLite [FF73+] * 0 = disabled - * 1 = consult CRLite but only collect telemetry (default) + * 1 = consult CRLite but only collect telemetry * 2 = consult CRLite and enforce both "Revoked" and "Not Revoked" results - * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (FF99+) + * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (FF99+, default FF100+) * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071 * [2] https://blog.mozilla.org/security/tag/crlite/ ***/ user_pref("security.remote_settings.crlite_filters.enabled", true); @@ -589,16 +580,11 @@ user_pref("network.http.referer.XOriginPolicy", 2); * 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/ user_pref("network.http.referer.XOriginTrimmingPolicy", 2); -/*** [SECTION 1700]: CONTAINERS - Check out Temporary Containers [2], read the article [3], and visit the wiki/repo [4] - [1] https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers - [2] https://addons.mozilla.org/firefox/addon/temporary-containers/ - [3] https://medium.com/@stoically/enhance-your-privacy-in-firefox-with-temporary-containers-33925cd6cd21 - [4] https://github.com/stoically/temporary-containers/wiki -***/ +/*** [SECTION 1700]: CONTAINERS ***/ user_pref("_user.js.parrot", "1700 syntax error: the parrot's bit the dust!"); /* 1701: enable Container Tabs and its UI setting [FF50+] - * [SETTING] General>Tabs>Enable Container Tabs ***/ + * [SETTING] General>Tabs>Enable Container Tabs + * https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers ***/ user_pref("privacy.userContext.enabled", true); user_pref("privacy.userContext.ui.enabled", true); /* 1702: set behavior on "+ Tab" button to display container menu on left click [FF74+] @@ -795,12 +781,6 @@ user_pref("network.cookie.lifetimePolicy", 2); * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust * [1] https://bugzilla.mozilla.org/1671182 ***/ // user_pref("privacy.clearsitedata.cache.enabled", true); -/* 2803: set third-party cookies to session-only - * [NOTE] .sessionOnly overrides .nonsecureSessionOnly except when .sessionOnly=false and - * .nonsecureSessionOnly=true. This allows you to keep HTTPS cookies, but session-only HTTP ones - * [1] https://feeding.cloud.geek.nz/posts/tweaking-cookies-for-privacy-in-firefox/ ***/ -user_pref("network.cookie.thirdparty.sessionOnly", true); -user_pref("network.cookie.thirdparty.nonsecureSessionOnly", true); // [FF58+] /** SANITIZE ON SHUTDOWN : ALL OR NOTHING ***/ /* 2810: enable Firefox to clear items on shutdown (2811) @@ -865,8 +845,8 @@ user_pref("privacy.sanitize.timeSpan", 0); FF56 1369303 - spoof/disable performance API 1333651 - spoof User Agent & Navigator API - JS: the version is spoofed as ESR, and the OS as Windows 10, OS 10.15, Android 10, or Linux - HTTP Headers: spoofed as Windows or Android + version: spoofed as ESR (FF102+ this is limited to Android) + OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android 1369319 - disable device sensor API 1369357 - disable site specific zoom 1337161 - hide gamepads from content @@ -1088,14 +1068,6 @@ user_pref("network.http.referer.spoofSource", false); // [DEFAULT: false] /* 6004: enforce a security delay on some confirmation dialogs such as install, open/save * [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/ user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] -/* 6005: enforce window.opener protection [FF65+] - * Makes rel=noopener implicit for target=_blank in anchor and area elements when no rel attribute is set ***/ -user_pref("dom.targetBlankNoOpener.enabled", true); // [DEFAULT: true] -/* 6006: enforce "window.name" protection [FF82+] - * If a new page from another domain is loaded into a tab, then window.name is set to an empty string. The original - * string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks - * [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/ -user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true] /* 6007: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /* 6008: enforce no First Party Isolation [FF51+] @@ -1114,13 +1086,20 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] +/* 6012: disable SHA-1 certificates ***/ +user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1 FF102+] /* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ + // user_pref("browser.urlbar.trimURLs", ""); // user_pref("dom.caches.enabled", ""); // user_pref("dom.storageManager.enabled", ""); // user_pref("dom.storage_access.enabled", ""); + // user_pref("dom.targetBlankNoOpener.enabled", ""); + // user_pref("network.cookie.thirdparty.sessionOnly", ""); + // user_pref("network.cookie.thirdparty.nonsecureSessionOnly", ""); // user_pref("privacy.firstparty.isolate.block_post_message", ""); // user_pref("privacy.firstparty.isolate.restrict_opener_access", ""); // user_pref("privacy.firstparty.isolate.use_site", ""); + // user_pref("privacy.window.name.update.enabled", ""); // user_pref("security.insecure_connection_text.enabled", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ @@ -1207,6 +1186,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.partition.network_state.ocsp_cache", true); + // user_pref("privacy.query_stripping.enabled", true); // [FF101+] [ETP FF102+] // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] From c21b9faefc0d99ab4f91836ceddc68a2a52ff9cb Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 14 Jun 2022 07:01:01 +0000 Subject: [PATCH 094/203] dom.storage.next_gen --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 1216e70..435bae7 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 12-June-2022 + Last updated: 14-June-2022 Instructions: - [optional] close Firefox and backup your profile @@ -35,6 +35,7 @@ /* 92-102 */ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 + 'dom.storage.next_gen', // 102 'network.http.spdy.enabled', // 100 'network.http.spdy.enabled.deps', 'network.http.spdy.enabled.http2', From 3fcc711c5acc24032fb9ee5d6b104f6dde0a2315 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 1 Jul 2022 02:42:16 +0000 Subject: [PATCH 095/203] network.cookie.lifetimePolicy https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 435bae7..e86dc4b 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 14-June-2022 + Last updated: 30-June-2022 Instructions: - [optional] close Firefox and backup your profile @@ -41,6 +41,7 @@ 'network.http.spdy.enabled.http2', 'network.http.spdy.websockets', 'layout.css.font-visibility.level', // 94 + 'network.cookie.lifetimePolicy', // 102 [technically removed in 104] 'security.csp.enable', // 99 'security.ssl3.rsa_des_ede3_sha', // 93 /* 79-91 */ From d466cf694e56265a325d3cf6c6248a6e596e60aa Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 1 Jul 2022 08:15:39 +0000 Subject: [PATCH 096/203] two password prefs https://bugzilla.mozilla.org/1767099 --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index e86dc4b..5db8b48 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 30-June-2022 + Last updated: 1-July-2022 Instructions: - [optional] close Firefox and backup your profile @@ -42,7 +42,9 @@ 'network.http.spdy.websockets', 'layout.css.font-visibility.level', // 94 'network.cookie.lifetimePolicy', // 102 [technically removed in 104] + 'security.ask_for_password', // 102 'security.csp.enable', // 99 + 'security.password_lifetime', // 102 'security.ssl3.rsa_des_ede3_sha', // 93 /* 79-91 */ 'browser.cache.offline.storage.enable', From ceacc9dd74086478d43ccf3a4f0bd5befda53a43 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 2 Jul 2022 00:43:25 +0000 Subject: [PATCH 097/203] v102 (#1477) --- user.js | 80 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/user.js b/user.js index fdd7e63..f1f9355 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 12 June 2022 -* version: 101 +* date: 1 July 2022 +* version: 102 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -82,7 +82,7 @@ user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!"); user_pref("browser.shell.checkDefaultBrowser", false); /* 0102: set startup page [SETUP-CHROME] * 0=blank, 1=home, 2=last visited page, 3=resume previous session - * [NOTE] Session Restore is cleared with history (2811, 2812), and not used in Private Browsing mode + * [NOTE] Session Restore is cleared with history (2811, 2820), and not used in Private Browsing mode * [SETTING] General>Startup>Restore previous session ***/ user_pref("browser.startup.page", 0); /* 0103: set HOME+NEWWINDOW page @@ -389,11 +389,6 @@ user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] [1] https://support.mozilla.org/kb/use-primary-password-protect-stored-logins-and-pas ***/ user_pref("_user.js.parrot", "0900 syntax error: the parrot's expired!"); -/* 0901: set when Firefox should prompt for the primary password - * 0=once per session (default), 1=every time it's needed, 2=after n minutes (0902) ***/ -user_pref("security.ask_for_password", 2); -/* 0902: set how long in minutes Firefox should remember the primary password (0901) ***/ -user_pref("security.password_lifetime", 5); // [DEFAULT: 30] /* 0903: disable auto-filling username & password form fields * can leak in cross-site forms *and* be spoofed * [NOTE] Username & password is still available when you enter the field @@ -522,7 +517,7 @@ user_pref("security.mixed_content.block_display_content", true); * [SETTING] to add site exceptions: Padlock>HTTPS-Only mode>On (after "Continue to HTTP Site") * [SETTING] Privacy & Security>HTTPS-Only Mode (and manage exceptions) * [TEST] http://example.com [upgrade] - * [TEST] http://neverssl.com/ [no upgrade] ***/ + * [TEST] http://httpforever.com/ [no upgrade] ***/ user_pref("dom.security.https_only_mode", true); // [FF76+] // user_pref("dom.security.https_only_mode_pbm", true); // [FF80+] /* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/ @@ -758,7 +753,7 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin user_pref("browser.contentblocking.category", "strict"); /* 2702: disable ETP web compat features [FF93+] * [SETUP-HARDEN] Includes skip lists, heuristics (SmartBlock) and automatic grants - * Opener Heuristics are granted for 30 days and Redirect Heuristics for 15 minutes, see [3] + * Opener and redirect heuristics are granted for 30 days, see [3] * [1] https://blog.mozilla.org/security/2021/07/13/smartblock-v2/ * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ @@ -768,26 +763,17 @@ user_pref("privacy.partition.serviceWorkers", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); -/** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ -/* 2801: delete cookies and site data on exit - * 0=keep until they expire (default), 2=keep until you close Firefox - * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, indexedDB, - * sharedWorkers and serviceWorkers. serviceWorkers require an "Allow" permission - * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed - * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow - * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ -user_pref("network.cookie.lifetimePolicy", 2); -/* 2802: delete cache on exit [FF96+] - * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust - * [1] https://bugzilla.mozilla.org/1671182 ***/ - // user_pref("privacy.clearsitedata.cache.enabled", true); - -/** SANITIZE ON SHUTDOWN : ALL OR NOTHING ***/ +/** SANITIZE ON SHUTDOWN: ALLOWS COOKIES + SITE DATA EXCEPTIONS FF102+ ***/ /* 2810: enable Firefox to clear items on shutdown (2811) - * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes ***/ + * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note in 2811). + * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for + * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) + * [WARNING] Be selective with what cookies you keep, as they also disable partitioning (1767271) + * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes + * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question) + * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); /* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * These items do not use exceptions, it is all or nothing (1681701) * [NOTE] If "history" is true, downloads will also be cleared * [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) @@ -798,10 +784,16 @@ user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.offlineApps", false); // [DEFAULT: false] -user_pref("privacy.clearOnShutdown.cookies", false); +user_pref("privacy.clearOnShutdown.offlineApps", true); +user_pref("privacy.clearOnShutdown.cookies", true); // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] -/* 2812: reset default items to clear with Ctrl-Shift-Del (to match 2811) [SETUP-CHROME] +/* 2812: delete cache on exit [FF96+] + * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust + * [1] https://bugzilla.mozilla.org/1671182 ***/ + // user_pref("privacy.clearsitedata.cache.enabled", true); + +/** SANITIZE MANUAL: ALL OR NOTHING ***/ +/* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] * This dialog can also be accessed from the menu History>Clear Recent History * Firefox remembers your last choices. This will reset them when you start Firefox * [NOTE] Regardless of what you set "downloads" to, as soon as the dialog @@ -815,13 +807,13 @@ user_pref("privacy.cpd.cookies", false); // user_pref("privacy.cpd.downloads", true); // not used, see note above // user_pref("privacy.cpd.passwords", false); // [DEFAULT: false] not listed // user_pref("privacy.cpd.siteSettings", false); // [DEFAULT: false] -/* 2813: clear Session Restore data when sanitizing on shutdown or manually [FF34+] +/* 2821: clear Session Restore data when sanitizing on shutdown or manually [FF34+] * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) * [NOTE] privacy.clearOnShutdown.openWindows prevents resuming from crashes (also see 5008) * [NOTE] privacy.cpd.openWindows has a bug that causes an additional window to open ***/ // user_pref("privacy.clearOnShutdown.openWindows", true); // user_pref("privacy.cpd.openWindows", true); -/* 2814: reset default "Time range to clear" for "Clear Recent History" (2812) +/* 2822: reset default "Time range to clear" for "Clear Recent History" (2820) * Firefox remembers your last choice. This will reset the value when you start Firefox * 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today * [NOTE] Values 5 (last 5 minutes) and 6 (last 24 hours) are not listed in the dropdown, @@ -841,7 +833,6 @@ user_pref("privacy.sanitize.timeSpan", 0); FF53: fixes GetSupportedNames in nsMimeTypeArray and nsPluginArray (1324044) 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) - 1217238 - reduce precision of time exposed by javascript (FF55) FF56 1369303 - spoof/disable performance API 1333651 - spoof User Agent & Navigator API @@ -883,6 +874,7 @@ user_pref("privacy.sanitize.timeSpan", 0); FF91+ 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) + 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was capped at 100ms) (FF102) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable privacy.resistFingerprinting [FF41+] @@ -975,7 +967,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow /* 5005: disable intermediate certificate caching [FF41+] [RESTART] * [NOTE] This affects login/cert/key dbs. The effect is all credentials are session-only. * Saved logins and passwords are not available. Reset the pref and restart to return them ***/ - // user_pref("security.nocertdb", true); // [HIDDEN PREF] + // user_pref("security.nocertdb", true); // [HIDDEN PREF in FF101 or lower] /* 5006: disable favicons in history and bookmarks * [NOTE] Stored as data blobs in favicons.sqlite, these don't reveal anything that your * actual history (and bookmarks) already do. Your history is more detailed, so @@ -1068,8 +1060,6 @@ user_pref("network.http.referer.spoofSource", false); // [DEFAULT: false] /* 6004: enforce a security delay on some confirmation dialogs such as install, open/save * [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/ user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] -/* 6007: enforce Local Storage Next Generation (LSNG) [FF65+] ***/ -user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] /* 6008: enforce no First Party Isolation [FF51+] * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), * and enabling FPI disables those. FPI is no longer maintained ***/ @@ -1142,7 +1132,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7005: disable SSL session IDs [FF36+] * [WHY] Passive fingerprinting and perf costs. These are session-only * and isolated with network partitioning (FF85+) and/or containers ***/ - // user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF] + // user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF in FF101 or lower] /* 7006: onions * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 @@ -1342,6 +1332,22 @@ user_pref("security.csp.enable", true); // [DEFAULT: true] // user_pref("network.http.spdy.enabled.deps", false); // user_pref("network.http.spdy.enabled.http2", false); // user_pref("network.http.spdy.websockets", false); // [FF65+] +// FF102 + // 0901: set when Firefox should prompt for the primary password + // 0=once per session (default), 1=every time it's needed, 2=after n minutes (0902) + // [-] https://bugzilla.mozilla.org/1767099 +user_pref("security.ask_for_password", 2); + // 0902: set how long in minutes Firefox should remember the primary password (0901) + // [-] https://bugzilla.mozilla.org/1767099 +user_pref("security.password_lifetime", 5); // [DEFAULT: 30] + // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) + // 0=keep until they expire (default), 2=keep until you close Firefox + // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed + // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665 +user_pref("network.cookie.lifetimePolicy", 2); + // 6007: enforce Local Storage Next Generation (LSNG) [FF65+] + // [-] https://bugzilla.mozilla.org/1764696 +user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] // ***/ /* END: internal custom pref to test for syntax errors ***/ From c6ab6c4b4895d533c872085ebb6f3b6c78627d80 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Jul 2022 10:38:43 +0000 Subject: [PATCH 098/203] v102.1 (#1507) revert back to relying on network.cookie.lifetimePolicy --- user.js | 63 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/user.js b/user.js index f1f9355..43a44f5 100644 --- a/user.js +++ b/user.js @@ -1,6 +1,6 @@ /****** * name: arkenfox user.js -* date: 1 July 2022 +* date: 18 July 2022 * version: 102 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -333,7 +333,7 @@ user_pref("keyword.enabled", false); * as the 411 for DNS errors?), privacy issues (why connect to sites you didn't * intend to), can leak sensitive data (e.g. query strings: e.g. Princeton attack), * and is a security risk (e.g. common typos & malicious sites set up to exploit this) ***/ -user_pref("browser.fixup.alternate.enabled", false); +user_pref("browser.fixup.alternate.enabled", false); // [DEFAULT: false FF104+] /* 0804: disable live search suggestions * [NOTE] Both must be true for the location bar to work * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine @@ -493,11 +493,10 @@ user_pref("security.OCSP.require", true); * 2=detect Family Safety mode and import the root * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 ***/ user_pref("security.family_safety.mode", 0); -/* 1223: enable strict pinning - * PKP (Public Key Pinning) 0=disabled, 1=allow user MiTM (such as your antivirus), 2=strict - * [SETUP-WEB] If you rely on an AV (antivirus) to protect your web browsing - * by inspecting ALL your web traffic, then leave at current default=1 - * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16206 ***/ +/* 1223: enable strict PKP (Public Key Pinning) + * 0=disabled, 1=allow user MiTM (default; such as your antivirus), 2=strict + * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE: If you rely on an AV (antivirus) to protect + * your web browsing by inspecting ALL your web traffic, then override to current default ***/ user_pref("security.cert_pinning.enforcement_level", 2); /* 1224: enable CRLite [FF73+] * 0 = disabled @@ -763,17 +762,26 @@ user_pref("privacy.partition.serviceWorkers", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); -/** SANITIZE ON SHUTDOWN: ALLOWS COOKIES + SITE DATA EXCEPTIONS FF102+ ***/ -/* 2810: enable Firefox to clear items on shutdown (2811) - * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note in 2811). - * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for - * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) - * [WARNING] Be selective with what cookies you keep, as they also disable partitioning (1767271) - * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes - * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question) +/** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ +/* 2801: delete cookies and site data on exit + * 0=keep until they expire (default), 2=keep until you close Firefox + * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, indexedDB, + * sharedWorkers and serviceWorkers. serviceWorkers require an "Allow" permission + * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed + * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ +user_pref("network.cookie.lifetimePolicy", 2); +/* 2802: delete cache on exit [FF96+] + * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust + * [1] https://bugzilla.mozilla.org/1671182 ***/ + // user_pref("privacy.clearsitedata.cache.enabled", true); + +/** SANITIZE ON SHUTDOWN : ALL OR NOTHING ***/ +/* 2810: enable Firefox to clear items on shutdown (2811) + * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); /* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] + * These items do not use exceptions, it is all or nothing (1681701) * [NOTE] If "history" is true, downloads will also be cleared * [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) @@ -784,13 +792,9 @@ user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.offlineApps", true); -user_pref("privacy.clearOnShutdown.cookies", true); - // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] -/* 2812: delete cache on exit [FF96+] - * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust - * [1] https://bugzilla.mozilla.org/1671182 ***/ - // user_pref("privacy.clearsitedata.cache.enabled", true); +user_pref("privacy.clearOnShutdown.offlineApps", false); // [DEFAULT: false] +user_pref("privacy.clearOnShutdown.cookies", false); + // user_pref("privacy.clearOnShutdown.siteSettings", false); /** SANITIZE MANUAL: ALL OR NOTHING ***/ /* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] @@ -805,12 +809,11 @@ user_pref("privacy.cpd.sessions", true); // [DEFAULT: true] user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] user_pref("privacy.cpd.cookies", false); // user_pref("privacy.cpd.downloads", true); // not used, see note above - // user_pref("privacy.cpd.passwords", false); // [DEFAULT: false] not listed - // user_pref("privacy.cpd.siteSettings", false); // [DEFAULT: false] + // user_pref("privacy.cpd.passwords", false); + // user_pref("privacy.cpd.siteSettings", false); /* 2821: clear Session Restore data when sanitizing on shutdown or manually [FF34+] * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) - * [NOTE] privacy.clearOnShutdown.openWindows prevents resuming from crashes (also see 5008) - * [NOTE] privacy.cpd.openWindows has a bug that causes an additional window to open ***/ + * [NOTE] privacy.clearOnShutdown.openWindows prevents resuming from crashes (also see 5008) ***/ // user_pref("privacy.clearOnShutdown.openWindows", true); // user_pref("privacy.cpd.openWindows", true); /* 2822: reset default "Time range to clear" for "Clear Recent History" (2820) @@ -976,7 +979,8 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("browser.chrome.site_icons", false); /* 5007: exclude "Undo Closed Tabs" in Session Restore ***/ // user_pref("browser.sessionstore.max_tabs_undo", 0); -/* 5008: disable resuming session from crash ***/ +/* 5008: disable resuming session from crash + * [TEST] about:crashparent ***/ // user_pref("browser.sessionstore.resume_from_crash", false); /* 5009: disable "open with" in download dialog [FF50+] * Application data isolation [1] @@ -1340,11 +1344,6 @@ user_pref("security.ask_for_password", 2); // 0902: set how long in minutes Firefox should remember the primary password (0901) // [-] https://bugzilla.mozilla.org/1767099 user_pref("security.password_lifetime", 5); // [DEFAULT: 30] - // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) - // 0=keep until they expire (default), 2=keep until you close Firefox - // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed - // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665 -user_pref("network.cookie.lifetimePolicy", 2); // 6007: enforce Local Storage Next Generation (LSNG) [FF65+] // [-] https://bugzilla.mozilla.org/1764696 user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] From a5e75c4bd3b23ea6537d1d6cbb488e6e95c06ecc Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Jul 2022 11:27:05 +0000 Subject: [PATCH 099/203] fixup network.cookie.lifetimePolicy migration code was backed out in FF102.1 --- scratchpad-scripts/arkenfox-cleanup.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 5db8b48..0dce2a9 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 1-July-2022 + Last updated: 18-July-2022 Instructions: - [optional] close Firefox and backup your profile @@ -32,6 +32,8 @@ const aPREFS = [ /* DEPRECATED */ + /* 103+ */ + 'network.cookie.lifetimePolicy', // 103 [technically removed in 104] /* 92-102 */ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 @@ -41,7 +43,6 @@ 'network.http.spdy.enabled.http2', 'network.http.spdy.websockets', 'layout.css.font-visibility.level', // 94 - 'network.cookie.lifetimePolicy', // 102 [technically removed in 104] 'security.ask_for_password', // 102 'security.csp.enable', // 99 'security.password_lifetime', // 102 From 4b4248157a400200387cb521606c90f1fb6ebe2f Mon Sep 17 00:00:00 2001 From: Brad Smith <bradster@infinitewarp.com> Date: Sun, 24 Jul 2022 09:10:06 -0400 Subject: [PATCH 100/203] make updater.sh check explicitly for Y/y instead of N/n (#1511) thanks @infinitewarp --- updater.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/updater.sh b/updater.sh index 74f378c..b36cc2a 100755 --- a/updater.sh +++ b/updater.sh @@ -2,9 +2,9 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.4 +## version: 3.5 ## Author: Pat Johnson (@overdodactyl) -## Additional contributors: @earthlng, @ema-pe, @claustromaniac +## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_updater() ) @@ -195,7 +195,7 @@ update_updater() { echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}" read -p "" -n 1 -r echo -e "\n\n" - [[ $REPLY =~ ^[Nn]$ ]] && return 0 # Update available, but user chooses not to update + ! [[ $REPLY =~ ^[Yy]$ ]] && return 0 # Update available, but user chooses not to update fi else return 0 # No update available @@ -253,7 +253,7 @@ update_userjs() { echo -e "This script will update to the latest user.js file and append any custom configurations from user-overrides.js. ${RED}Continue Y/N? ${NC}" read -p "" -n 1 -r echo -e "\n" - if [[ $REPLY =~ ^[Nn]$ ]]; then + if ! [[ $REPLY =~ ^[Yy]$ ]]; then echo -e "${RED}Process aborted${NC}" rm "$newfile" return 1 From 996881aef184246a011ac29382e91d634cda7b65 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sun, 24 Jul 2022 13:11:28 +0000 Subject: [PATCH 101/203] Update updater.sh --- updater.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/updater.sh b/updater.sh index b36cc2a..bf275c5 100755 --- a/updater.sh +++ b/updater.sh @@ -195,10 +195,10 @@ update_updater() { echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}" read -p "" -n 1 -r echo -e "\n\n" - ! [[ $REPLY =~ ^[Yy]$ ]] && return 0 # Update available, but user chooses not to update + [[ $REPLY =~ ^[Yy]$ ]] || return 0 # Update available, but user chooses not to update fi else - return 0 # No update available + return 0 # No update available fi mv "${tmpfile}" "$SCRIPT_FILE" chmod u+x "$SCRIPT_FILE" From ded7c01a08c296cf27a1b7c39d1abc66d7f6e046 Mon Sep 17 00:00:00 2001 From: xfzv <78810647+xfzv@users.noreply.github.com> Date: Sat, 30 Jul 2022 12:22:32 +0000 Subject: [PATCH 102/203] Back up prefs.js to `prefsjs_backups` directory (#1514) --- prefsCleaner.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 7db9ef0..e83c2fd 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -69,7 +69,8 @@ fStart() { fi fFF_check - bakfile="prefs.js.backup.$(date +"%Y-%m-%d_%H%M")" + mkdir -p prefsjs_backups + bakfile="prefsjs_backups/prefs.js.backup.$(date +"%Y-%m-%d_%H%M")" mv prefs.js "${bakfile}" || fQuit 1 "Operation aborted.\nReason: Could not create backup file $bakfile" echo -e "\nprefs.js backed up: $bakfile" echo "Cleaning prefs.js..." From ecb63e82c9e6ec1d0b027e9b3d583b3ab3a5e368 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sat, 30 Jul 2022 12:23:27 +0000 Subject: [PATCH 103/203] Update prefsCleaner.sh --- prefsCleaner.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index e83c2fd..da2cfe9 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,7 +2,7 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.4 +## version: 1.5 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh @@ -82,7 +82,7 @@ echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.4 ║" +echo " ║ v1.5 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." From 6e53e841f78c512f4d1eedb6a2409df746eea979 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 31 Jul 2022 10:50:24 +0000 Subject: [PATCH 104/203] security.pki.sha1_enforcement_level --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 0dce2a9..e3fafda 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 18-July-2022 + Last updated: 31-August-2022 Instructions: - [optional] close Firefox and backup your profile @@ -34,6 +34,7 @@ /* DEPRECATED */ /* 103+ */ 'network.cookie.lifetimePolicy', // 103 [technically removed in 104] + 'security.pki.sha1_enforcement_level', // 103 /* 92-102 */ 'browser.urlbar.suggest.quicksuggest', // 95 'dom.securecontext.whitelist_onions', // 97 From 0dba33688fe468aca9b58c60910201afb3b89f60 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 17 Aug 2022 19:24:38 +0000 Subject: [PATCH 105/203] v103 (#1508) --- user.js | 113 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 52 deletions(-) diff --git a/user.js b/user.js index 43a44f5..8ae66eb 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 18 July 2022 -* version: 102 +* date: 18 August 2022 +* version: 103 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -30,8 +30,9 @@ * It is best to use the arkenfox release that is optimized for and matches your Firefox version * EVERYONE: each release - run prefsCleaner to reset prefs made inactive, including deprecated (9999s) - ESR91 - - If you are not using arkenfox v91... (not a definitive list) + ESR102 + - If you are not using arkenfox v102-1... (not a definitive list) + - 2815: clearOnShutdown cookies + offlineApps should be false - 9999: switch the appropriate deprecated section(s) back on * INDEX: @@ -82,7 +83,7 @@ user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!"); user_pref("browser.shell.checkDefaultBrowser", false); /* 0102: set startup page [SETUP-CHROME] * 0=blank, 1=home, 2=last visited page, 3=resume previous session - * [NOTE] Session Restore is cleared with history (2811, 2820), and not used in Private Browsing mode + * [NOTE] Session Restore is cleared with history (2811), and not used in Private Browsing mode * [SETTING] General>Startup>Restore previous session ***/ user_pref("browser.startup.page", 0); /* 0103: set HOME+NEWWINDOW page @@ -119,6 +120,7 @@ user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/ user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] user_pref("geo.provider.use_corelocation", false); // [MAC] user_pref("geo.provider.use_gpsd", false); // [LINUX] +user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] /* 0203: disable region updates * [1] https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html ***/ user_pref("browser.region.network.url", ""); // [FF78+] @@ -219,6 +221,7 @@ user_pref("network.connectivity-service.enabled", false); [1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/ [2] https://wiki.mozilla.org/Security/Safe_Browsing [3] https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work + [4] https://educatedguesswork.org/posts/safe-browsing-privacy/ ***/ user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!"); /* 0401: disable SB (Safe Browsing) @@ -344,9 +347,9 @@ user_pref("browser.urlbar.suggest.searches", false); * [1] https://bugzilla.mozilla.org/1348275 ***/ user_pref("browser.urlbar.speculativeConnect.enabled", false); /* 0806: disable location bar leaking single words to a DNS provider **after searching** [FF78+] - * 0=never resolve single words, 1=heuristic (default), 2=always resolve + * 0=never resolve, 1=use heuristics, 2=always resolve * [1] https://bugzilla.mozilla.org/1642623 ***/ -user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0); +user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0); // [DEFAULT: 0 FF104+] /* 0807: disable location bar contextual suggestions [FF92+] * [SETTING] Privacy & Security>Address Bar>Suggestions from... * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ @@ -622,17 +625,6 @@ user_pref("media.peerconnection.ice.default_address_only", true); * [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/ user_pref("media.eme.enabled", false); // user_pref("browser.eme.ui.enabled", false); -/* 2030: disable autoplay of HTML5 media [FF63+] - * 0=Allow all, 1=Block non-muted media (default), 5=Block all - * [NOTE] You can set exceptions under site permissions - * [SETTING] Privacy & Security>Permissions>Autoplay>Settings>Default for all websites ***/ - // user_pref("media.autoplay.default", 5); -/* 2031: disable autoplay of HTML5 media if you interacted with the site [FF78+] - * 0=sticky (default), 1=transient, 2=user - * Firefox's Autoplay Policy Documentation (PDF) is linked below via SUMO - * [NOTE] If you have trouble with some video sites, then add an exception (2030) - * [1] https://support.mozilla.org/questions/1293231 ***/ -user_pref("media.autoplay.blocking_policy", 2); /*** [SECTION 2400]: DOM (DOCUMENT OBJECT MODEL) ***/ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); @@ -762,41 +754,43 @@ user_pref("privacy.partition.serviceWorkers", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); -/** COOKIES + SITE DATA : ALLOWS EXCEPTIONS ***/ -/* 2801: delete cookies and site data on exit - * 0=keep until they expire (default), 2=keep until you close Firefox - * [NOTE] A "cookie" block permission also controls localStorage/sessionStorage, indexedDB, - * sharedWorkers and serviceWorkers. serviceWorkers require an "Allow" permission - * [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed - * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow - * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ -user_pref("network.cookie.lifetimePolicy", 2); -/* 2802: delete cache on exit [FF96+] - * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust - * [1] https://bugzilla.mozilla.org/1671182 ***/ - // user_pref("privacy.clearsitedata.cache.enabled", true); - -/** SANITIZE ON SHUTDOWN : ALL OR NOTHING ***/ -/* 2810: enable Firefox to clear items on shutdown (2811) - * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes ***/ +/* 2810: enable Firefox to clear items on shutdown + * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); + +/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS ***/ /* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * These items do not use exceptions, it is all or nothing (1681701) * [NOTE] If "history" is true, downloads will also be cleared * [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies - * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) - * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes>Settings * [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/ user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.offlineApps", false); // [DEFAULT: false] -user_pref("privacy.clearOnShutdown.cookies", false); - // user_pref("privacy.clearOnShutdown.siteSettings", false); + // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] +/* 2812: set Session Restore to clear on shutdown (if 2810 is true) [FF34+] + * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) + * [NOTE] If true, this prevents resuming from crashes (also see 5008) ***/ + // user_pref("privacy.clearOnShutdown.openWindows", true); -/** SANITIZE MANUAL: ALL OR NOTHING ***/ +/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ ***/ +/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] + * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note below). + * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for + * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) + * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) + * [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271) + * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question) + * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ +user_pref("privacy.clearOnShutdown.cookies", true); // Cookies +user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data +/* 2816: set cache to clear on exit [FF96+] + * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust + * [1] https://bugzilla.mozilla.org/1671182 ***/ + // user_pref("privacy.clearsitedata.cache.enabled", true); + +/** SANITIZE MANUAL: IGNORES "ALLOW" SITE EXCEPTIONS ***/ /* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] * This dialog can also be accessed from the menu History>Clear Recent History * Firefox remembers your last choices. This will reset them when you start Firefox @@ -809,13 +803,9 @@ user_pref("privacy.cpd.sessions", true); // [DEFAULT: true] user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] user_pref("privacy.cpd.cookies", false); // user_pref("privacy.cpd.downloads", true); // not used, see note above + // user_pref("privacy.cpd.openWindows", false); // Session Restore // user_pref("privacy.cpd.passwords", false); // user_pref("privacy.cpd.siteSettings", false); -/* 2821: clear Session Restore data when sanitizing on shutdown or manually [FF34+] - * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) - * [NOTE] privacy.clearOnShutdown.openWindows prevents resuming from crashes (also see 5008) ***/ - // user_pref("privacy.clearOnShutdown.openWindows", true); - // user_pref("privacy.cpd.openWindows", true); /* 2822: reset default "Time range to clear" for "Clear Recent History" (2820) * Firefox remembers your last choice. This will reset the value when you start Firefox * 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today @@ -918,7 +908,7 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] user_pref("browser.startup.blankWindow", false); /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ -user_pref("browser.display.use_system_colors", false); // [DEFAULT false NON-WINDOWS] +user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] /* 4511: enforce non-native widget theme * Security: removes/reduces system API calls, e.g. win32k API [1] * Fingerprinting: provides a uniform look and feel across platforms [2] @@ -1080,8 +1070,6 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] -/* 6012: disable SHA-1 certificates ***/ -user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1 FF102+] /* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ // user_pref("browser.urlbar.trimURLs", ""); // user_pref("dom.caches.enabled", ""); @@ -1176,7 +1164,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.donottrackheader.enabled", true); /* 7016: customize ETP settings * [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ - // user_pref("network.cookie.cookieBehavior", 5); + // user_pref("network.cookie.cookieBehavior", 5); // [DEFAULT: 5 FF103+] // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.partition.network_state.ocsp_cache", true); @@ -1242,7 +1230,7 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("startup.homepage_welcome_url.additional", ""); // user_pref("startup.homepage_override_url", ""); // What's New page after updates /* WARNINGS ***/ - // user_pref("browser.tabs.warnOnClose", false); // [DEFAULT false FF94+] + // user_pref("browser.tabs.warnOnClose", false); // [DEFAULT: false FF94+] // user_pref("browser.tabs.warnOnCloseOtherTabs", false); // user_pref("browser.tabs.warnOnOpen", false); // user_pref("browser.warnOnQuitShortcut", false); // [FF94+] @@ -1269,6 +1257,14 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("accessibility.typeaheadfind", true); // enable "Find As You Type" // user_pref("clipboard.autocopy", false); // disable autocopy default [LINUX] // user_pref("layout.spellcheckDefault", 2); // 0=none, 1-multi-line, 2=multi-line & single-line +/* HTML5 MEDIA AUTOPLAY ***/ + // [NOTE] You can set exceptions under site permissions + // user_pref("media.autoplay.default", 5); // [FF63+] + // 0=Allow all, 1=Block non-muted media (default), 5=Block all + // [SETTING] Privacy & Security>Permissions>Autoplay>Settings>Default for all websites + // user_pref("media.autoplay.blocking_policy", 2); // disable autoplay if you interacted with the site [FF78+] + // 0=sticky (default), 1=transient, 2=user + // [1] https://support.mozilla.org/questions/1293231 // links to Autoplay Policy Documentation (PDF) /* UX BEHAVIOR ***/ // user_pref("browser.backspace_action", 2); // 0=previous page, 1=scroll up, 2=do nothing // user_pref("browser.quitShortcut.disabled", true); // disable Ctrl-Q quit shortcut [LINUX] [MAC] [FF87+] @@ -1349,5 +1345,18 @@ user_pref("security.password_lifetime", 5); // [DEFAULT: 30] user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] // ***/ +/* ESR102.x still uses all the following prefs +// [NOTE] replace the * with a slash in the line above to re-enable them +// FF103 + // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) + // 0=keep until they expire (default), 2=keep until you close Firefox + // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed + // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665 +user_pref("network.cookie.lifetimePolicy", 2); +// 6012: disable SHA-1 certificates + // [-] https://bugzilla.mozilla.org/1766687 +user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1 FF102+] +// ***/ + /* END: internal custom pref to test for syntax errors ***/ user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!"); From 05abe82136a02b33c3eb71c47577d7bc5f375b58 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 18 Aug 2022 20:12:42 +0000 Subject: [PATCH 106/203] v105 partition SWers by default: https://bugzilla.mozilla.org/show_bug.cgi?id=1784900 --- user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user.js b/user.js index 8ae66eb..4c00428 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 18 August 2022 -* version: 103 +* date: 30 August 2022 +* version: 104 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -750,7 +750,7 @@ user_pref("browser.contentblocking.category", "strict"); * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ // user_pref("privacy.antitracking.enableWebcompat", false); /* 2710: enable state partitioning of service workers [FF96+] ***/ -user_pref("privacy.partition.serviceWorkers", true); +user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); From 848290898da60d64dfaeb804228bb5528364042d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 22 Aug 2022 16:02:07 +0000 Subject: [PATCH 107/203] svg opentype fonts -> optional, see #1529 --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 4c00428..7091d41 100644 --- a/user.js +++ b/user.js @@ -549,8 +549,6 @@ user_pref("browser.xul.error_pages.expert_bad_cert", true); /*** [SECTION 1400]: FONTS ***/ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); -/* 1401: disable rendering of SVG OpenType fonts ***/ -user_pref("gfx.font_rendering.opentype_svg.enabled", false); /* 1402: limit font visibility (Windows, Mac, some Linux) [FF94+] * Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed * In normal windows: uses the first applicable: RFP (4506) over TP over Standard @@ -1041,6 +1039,8 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * [2] https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly * [3] https://www.zdnet.com/article/half-of-the-websites-using-webassembly-use-it-for-malicious-purposes ***/ // user_pref("javascript.options.wasm", false); +/* 5507: disable rendering of SVG OpenType fonts ***/ + // user_pref("gfx.font_rendering.opentype_svg.enabled", false); /*** [SECTION 6000]: DON'T TOUCH ***/ user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!"); From ff8d63f7e428462e0864ca1c20740e8631f96437 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 16:42:32 +0000 Subject: [PATCH 108/203] remove dead prefs https://bugzilla.mozilla.org/show_bug.cgi?id=1745248 - they migrated to `.supported` prefs (values detect or off) --- user.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 7091d41..0aedc06 100644 --- a/user.js +++ b/user.js @@ -372,8 +372,6 @@ user_pref("browser.formfill.enable", false); * [SETTING] Privacy & Security>Forms and Autofill>Autofill addresses * [1] https://wiki.mozilla.org/Firefox/Features/Form_Autofill ***/ user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] -user_pref("extensions.formautofill.available", "off"); // [FF56+] -user_pref("extensions.formautofill.creditCards.available", false); // [FF57+] user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] /* 0820: disable coloring of visited links @@ -1083,6 +1081,9 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("privacy.firstparty.isolate.use_site", ""); // user_pref("privacy.window.name.update.enabled", ""); // user_pref("security.insecure_connection_text.enabled", ""); +/* 6051: prefsCleaner: reset items removed from arkenfox FF102+ ***/ + // user_pref("extensions.formautofill.available", "off"); // [FF56+] + // user_pref("extensions.formautofill.creditCards.available", false); // [FF57+] /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From 2b2e151f45b372bc99ef7cdffe86fa1fe6f24298 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 16:52:38 +0000 Subject: [PATCH 109/203] extensions.formautofill https://bugzilla.mozilla.org/1745248 - migrated to .supported in FF99 --- scratchpad-scripts/arkenfox-cleanup.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index e3fafda..b430f20 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 31-August-2022 + Last updated: 23-August-2022 Instructions: - [optional] close Firefox and backup your profile @@ -237,6 +237,9 @@ 'toolkit.telemetry.unifiedIsOptIn', /* REMOVED */ + /* 103+ */ + 'extensions.formautofill.available', + 'extensions.formautofill.creditCards.available', /* 92-102 */ 'browser.urlbar.trimURLs', 'dom.caches.enabled', From 61f01f81fdc57846012001009cba603928f62e75 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 16:53:27 +0000 Subject: [PATCH 110/203] tidy --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 0aedc06..85b642c 100644 --- a/user.js +++ b/user.js @@ -1082,8 +1082,8 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("privacy.window.name.update.enabled", ""); // user_pref("security.insecure_connection_text.enabled", ""); /* 6051: prefsCleaner: reset items removed from arkenfox FF102+ ***/ - // user_pref("extensions.formautofill.available", "off"); // [FF56+] - // user_pref("extensions.formautofill.creditCards.available", false); // [FF57+] + // user_pref("extensions.formautofill.available", ""); + // user_pref("extensions.formautofill.creditCards.available", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From d040b95ed293548cbdff13c0c10367807ac0ec30 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:29:47 +0000 Subject: [PATCH 111/203] also reset the prefs migrated to .supported also hides/shows the UI. There is no need for this, it is overkill (and users might never be able to work out how to get them back). The .enabled prefs are enough to toggle the checkboxes IF they show based on .supportedCountries (which relies on browser.search.region) --- user.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/user.js b/user.js index 85b642c..bf3df89 100644 --- a/user.js +++ b/user.js @@ -1083,7 +1083,9 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("security.insecure_connection_text.enabled", ""); /* 6051: prefsCleaner: reset items removed from arkenfox FF102+ ***/ // user_pref("extensions.formautofill.available", ""); + // user_pref("extensions.formautofill.addresses.supported", ""); // user_pref("extensions.formautofill.creditCards.available", ""); + // user_pref("extensions.formautofill.creditCards.supported", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); From 06bfef8fd155fdf62e409c30cd1d68572f0c8b41 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:33:55 +0000 Subject: [PATCH 112/203] extensions.formautofill add migrated prefs for completeness - see comment in https://github.com/arkenfox/user.js/commit/d040b95ed293548cbdff13c0c10367807ac0ec30 --- scratchpad-scripts/arkenfox-cleanup.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index b430f20..1d2b1f0 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -239,7 +239,9 @@ /* REMOVED */ /* 103+ */ 'extensions.formautofill.available', + 'extensions.formautofill.addresses.supported', 'extensions.formautofill.creditCards.available', + 'extensions.formautofill.creditCards.supported', /* 92-102 */ 'browser.urlbar.trimURLs', 'dom.caches.enabled', From 5780b6d19750b165e42d4c7e698337eeea8bfa97 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:51:35 +0000 Subject: [PATCH 113/203] move Form Autofill to 5000s --- user.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/user.js b/user.js index bf3df89..7f16d55 100644 --- a/user.js +++ b/user.js @@ -366,14 +366,6 @@ user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html * [2] https://bugzilla.mozilla.org/381681 ***/ user_pref("browser.formfill.enable", false); -/* 0811: disable Form Autofill - * [NOTE] Stored data is NOT secure (uses a JSON file) - * [NOTE] Heuristics controls Form Autofill on forms without @autocomplete attributes - * [SETTING] Privacy & Security>Forms and Autofill>Autofill addresses - * [1] https://wiki.mozilla.org/Firefox/Features/Form_Autofill ***/ -user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] -user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] -user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] /* 0820: disable coloring of visited links * [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive * redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing @@ -999,6 +991,15 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow * 0=desktop, 1=downloads (default), 2=last used * [SETTING] To set your default "downloads": General>Downloads>Save files to ***/ // user_pref("browser.download.folderList", 2); +/* 5017: disable Form Autofill + * If .supportedCountries includes your region (browser.search.region) and .supported + * is "detect" (default), then the UI will show. Stored data is not secure, uses JSON + * [NOTE] Heuristics controls Form Autofill on forms without @autocomplete attributes + * [SETTING] Privacy & Security>Forms and Autofill>Autofill addresses + * [1] https://wiki.mozilla.org/Firefox/Features/Form_Autofill ***/ + // user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] + // user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] + // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] /*** [SECTION 5500]: OPTIONAL HARDENING Not recommended. Overriding these can cause breakage and performance issues, From 74be763f6065c9df00918a7ebe8fec5f6b3a8563 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 24 Aug 2022 05:53:46 +0000 Subject: [PATCH 114/203] add OCSP hard-fail error code --- user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index 7f16d55..7dd0812 100644 --- a/user.js +++ b/user.js @@ -470,7 +470,8 @@ user_pref("security.tls.enable_0rtt_data", false); * [SETTING] Privacy & Security>Security>Certificates>Query OCSP responder servers... * [1] https://en.wikipedia.org/wiki/Ocsp ***/ user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1] -/* 1212: set OCSP fetch failures (non-stapled, see 1211) to hard-fail [SETUP-WEB] +/* 1212: set OCSP fetch failures (non-stapled, see 1211) to hard-fail + * [SETUP-WEB] SEC_ERROR_OCSP_SERVER_ERROR * When a CA cannot be reached to validate a cert, Firefox just continues the connection (=soft-fail) * Setting this pref to true tells Firefox to instead terminate the connection (=hard-fail) * It is pointless to soft-fail when an OCSP fetch fails: you cannot confirm a cert is still valid (it From e38f02bc22e15e2e90bc50a413e4fd68c43a0640 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 28 Aug 2022 00:31:59 +0000 Subject: [PATCH 115/203] add extra bugzilla --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 7dd0812..f2e931f 100644 --- a/user.js +++ b/user.js @@ -1356,7 +1356,7 @@ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) // 0=keep until they expire (default), 2=keep until you close Firefox // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed - // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665 + // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665,1764761 user_pref("network.cookie.lifetimePolicy", 2); // 6012: disable SHA-1 certificates // [-] https://bugzilla.mozilla.org/1766687 From 3c73bc1e56e94d025edb732e34fc169bb5ab3e94 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 11 Sep 2022 02:39:08 +0000 Subject: [PATCH 116/203] 2720: add APS --- user.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/user.js b/user.js index f2e931f..d6faae2 100644 --- a/user.js +++ b/user.js @@ -1,6 +1,6 @@ /****** * name: arkenfox user.js -* date: 30 August 2022 +* date: 11 September 2022 * version: 104 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -740,6 +740,8 @@ user_pref("browser.contentblocking.category", "strict"); // user_pref("privacy.antitracking.enableWebcompat", false); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] +/* 2720: enable APS (Always Partitioning Storage) [FF104+] */ +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); From 4bc98005ec0ae56726a38d0854c645b407194278 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 1 Oct 2022 20:33:58 +0000 Subject: [PATCH 117/203] activity-stream.feeds.snippets --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 1d2b1f0..877b597 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 23-August-2022 + Last updated: 1-October-2022 Instructions: - [optional] close Firefox and backup your profile @@ -238,6 +238,7 @@ /* REMOVED */ /* 103+ */ + 'browser.newtabpage.activity-stream.feeds.snippets', 'extensions.formautofill.available', 'extensions.formautofill.addresses.supported', 'extensions.formautofill.creditCards.available', From 95ecd3e328eb9be993b23d876d8b2e142e306322 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 3 Oct 2022 07:18:30 +0000 Subject: [PATCH 118/203] browser.newtab.preload --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 877b597..7a7cfb1 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 1-October-2022 + Last updated: 3-October-2022 Instructions: - [optional] close Firefox and backup your profile @@ -238,6 +238,7 @@ /* REMOVED */ /* 103+ */ + 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.snippets', 'extensions.formautofill.available', 'extensions.formautofill.addresses.supported', From 958acf9c2ec920113ffeacfdf7f562e8d435de06 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 3 Oct 2022 13:47:30 +0000 Subject: [PATCH 119/203] activity-stream.feeds.discoverystreamfeed --- scratchpad-scripts/arkenfox-cleanup.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 7a7cfb1..9764fb7 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -239,6 +239,7 @@ /* REMOVED */ /* 103+ */ 'browser.newtab.preload', + 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', 'extensions.formautofill.available', 'extensions.formautofill.addresses.supported', From 4e3a64b5a10d5f8329ab2af503770e5276beca20 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:15:19 +0000 Subject: [PATCH 120/203] v105 (#1541) --- user.js | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/user.js b/user.js index d6faae2..85f1f36 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 11 September 2022 -* version: 104 +* date: 5 October 2022 +* version: 105 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -87,25 +87,17 @@ user_pref("browser.shell.checkDefaultBrowser", false); * [SETTING] General>Startup>Restore previous session ***/ user_pref("browser.startup.page", 0); /* 0103: set HOME+NEWWINDOW page - * about:home=Activity Stream (default, see 0105), custom URL, about:blank + * about:home=Firefox Home (default, see 0105), custom URL, about:blank * [SETTING] Home>New Windows and Tabs>Homepage and new windows ***/ user_pref("browser.startup.homepage", "about:blank"); /* 0104: set NEWTAB page - * true=Activity Stream (default, see 0105), false=blank page + * true=Firefox Home (default, see 0105), false=blank page * [SETTING] Home>New Windows and Tabs>New tabs ***/ user_pref("browser.newtabpage.enabled", false); -user_pref("browser.newtab.preload", false); -/* 0105: disable some Activity Stream items - * Activity Stream is the default homepage/newtab based on metadata and browsing behavior - * [SETTING] Home>Firefox Home Content>... to show/hide what you want ***/ -user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); -user_pref("browser.newtabpage.activity-stream.telemetry", false); -user_pref("browser.newtabpage.activity-stream.feeds.snippets", false); // [DEFAULT: false] -user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); -user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); -user_pref("browser.newtabpage.activity-stream.showSponsored", false); -user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false); // [FF66+] -user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] +/* 0105: disable sponsored content on Firefox Home (Activity Stream) + * [SETTING] Home>Firefox Home Content ***/ +user_pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] Pocket > Sponsored Stories +user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Sponsored shortcuts /* 0106: clear default topsites * [NOTE] This does not block you from adding your own ***/ user_pref("browser.newtabpage.activity-stream.default.sites", ""); @@ -183,6 +175,9 @@ user_pref("toolkit.coverage.endpoint.base", ""); /* 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+] * Defense-in-depth: currently covered by 0331 ***/ user_pref("browser.ping-centre.telemetry", false); +/* 0335: disable Firefox Home (Activity Stream) telemetry ***/ +user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); +user_pref("browser.newtabpage.activity-stream.telemetry", false); /** STUDIES ***/ /* 0340: disable Studies @@ -276,7 +271,7 @@ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost /* 0701: disable IPv6 * IPv6 can be abused, especially with MAC addresses, and can leak with VPNs: assuming * your ISP and/or router and/or website is IPv6 capable. Most sites will fall back to IPv4 - * [STATS] Firefox telemetry (July 2021) shows ~10% of all connections are IPv6 + * [STATS] Firefox telemetry (Sept 2022) shows ~8% of successful connections are IPv6 * [NOTE] This is an application level fallback. Disabling IPv6 is best done at an * OS/network level, and/or configured properly in VPN setups. If you are not masking your IP, * then this won't make much difference. If you are masking your IP, then it can only help. @@ -400,7 +395,7 @@ user_pref("network.auth.subresource-http-auth-allow", 1); /* 0906: enforce no automatic authentication on Microsoft sites [FF91+] [WINDOWS 10+] * [SETTING] Privacy & Security>Logins and Passwords>Allow Windows single sign-on for... * [1] https://support.mozilla.org/kb/windows-sso ***/ -user_pref("network.http.windows-sso.enabled", false); // [DEFAULT: false] + // user_pref("network.http.windows-sso.enabled", false); // [DEFAULT: false] /*** [SECTION 1000]: DISK AVOIDANCE ***/ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!"); @@ -416,10 +411,6 @@ user_pref("media.memory_cache_max_size", 65536); * define on which sites to save extra session data such as form content, cookies and POST data * 0=everywhere, 1=unencrypted sites, 2=nowhere ***/ user_pref("browser.sessionstore.privacy_level", 2); -/* 1004: set the minimum interval between session save operations - * Increasing this can help on older machines and some websites, as well as reducing writes [1] - * [1] https://bugzilla.mozilla.org/1304389 ***/ -user_pref("browser.sessionstore.interval", 30000); // [DEFAULT: 15000] /* 1005: disable automatic Firefox start and session restore after reboot [FF62+] [WINDOWS] * [1] https://bugzilla.mozilla.org/603903 ***/ user_pref("toolkit.winRegisterApplicationRestart", false); @@ -444,7 +435,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * but the problem is that the browser can't know that. Setting this pref to true is the only way for the * browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server * [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site? - * [STATS] SSL Labs (July 2021) reports over 99% of top sites have secure renegotiation [4] + * [STATS] SSL Labs (Sept 2022) reports over 99.3% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 @@ -740,8 +731,9 @@ user_pref("browser.contentblocking.category", "strict"); // user_pref("privacy.antitracking.enableWebcompat", false); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] -/* 2720: enable APS (Always Partitioning Storage) [FF104+] */ -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); +/* 2720: enable APS (Always Partitioning Storage) ***/ +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [FF105+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -1086,6 +1078,9 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("privacy.window.name.update.enabled", ""); // user_pref("security.insecure_connection_text.enabled", ""); /* 6051: prefsCleaner: reset items removed from arkenfox FF102+ ***/ + // user_pref("browser.newtab.preload", ""); + // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); + // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); // user_pref("extensions.formautofill.available", ""); // user_pref("extensions.formautofill.addresses.supported", ""); // user_pref("extensions.formautofill.creditCards.available", ""); @@ -1264,6 +1259,9 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switc // user_pref("accessibility.typeaheadfind", true); // enable "Find As You Type" // user_pref("clipboard.autocopy", false); // disable autocopy default [LINUX] // user_pref("layout.spellcheckDefault", 2); // 0=none, 1-multi-line, 2=multi-line & single-line +/* FIREFOX HOME CONTENT ***/ + // user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // Recommended by Pocket + // user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); /* HTML5 MEDIA AUTOPLAY ***/ // [NOTE] You can set exceptions under site permissions // user_pref("media.autoplay.default", 5); // [FF63+] @@ -1293,6 +1291,8 @@ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", fa // [SETTING] General>Browsing>Recommend extensions as you browse user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); // disable CFR [FF67+] // [SETTING] General>Browsing>Recommend features as you browse + // user_pref("browser.sessionstore.interval", 30000); // minimum interval between session save operations + // Increasing this may help on older machines and some websites, as well as reducing writes (1304389) // user_pref("network.manage-offline-status", false); // see bugzilla 620472 // user_pref("xpinstall.signatures.required", false); // enforced extension signing (Nightly/ESR) From db04bc44f2982ae8e39f10d056bc7cfe7804d4fd Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:34:45 +0000 Subject: [PATCH 121/203] some inactive prefs at default since 102+ - dom.vr.enabled - false FF97+ - network.http.altsvc.oe - false FF94+ - dom.netinfo.enabled - android joined desktop as false FF99+ - browser.tabs.warnOnClose - falsefalse FF94+ --- scratchpad-scripts/arkenfox-cleanup.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 9764fb7..c176784 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 3-October-2022 + Last updated: 5-October-2022 Instructions: - [optional] close Firefox and backup your profile @@ -241,10 +241,14 @@ 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', - 'extensions.formautofill.available', + 'browser.tabs.warnOnClose', + 'dom.netinfo.enabled', + 'dom.vr.enabled', 'extensions.formautofill.addresses.supported', + 'extensions.formautofill.available', 'extensions.formautofill.creditCards.available', 'extensions.formautofill.creditCards.supported', + 'network.http.altsvc.oe', /* 92-102 */ 'browser.urlbar.trimURLs', 'dom.caches.enabled', From 51f3fdbd87570488d8bac7d8e9aa5965ef9e0566 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 8 Oct 2022 14:08:55 +0000 Subject: [PATCH 122/203] devtools.chrome.enabled default false in stable, dev, beta, nightly --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index c176784..dd44842 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 5-October-2022 + Last updated: 8-October-2022 Instructions: - [optional] close Firefox and backup your profile @@ -242,6 +242,7 @@ 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', 'browser.tabs.warnOnClose', + 'devtools.chrome.enabled', 'dom.netinfo.enabled', 'dom.vr.enabled', 'extensions.formautofill.addresses.supported', From f4187632faef76df4de0cbb0cdc7199f22fadd76 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 8 Oct 2022 19:38:05 +0000 Subject: [PATCH 123/203] browser.ssl_override_behavior the code behind it was removed in FF68 - https://bugzilla.mozilla.org/show_bug.cgi?id=1530348 --- scratchpad-scripts/arkenfox-cleanup.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index dd44842..f839a14 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -241,6 +241,7 @@ 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', + 'browser.ssl_override_behavior', 'browser.tabs.warnOnClose', 'devtools.chrome.enabled', 'dom.netinfo.enabled', From 60dd839081dfa8347a49789923ed4bd0c154d93a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 4 Nov 2022 16:03:29 +0000 Subject: [PATCH 124/203] dom.disable_beforeunload, #1575 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index f839a14..1e98e9b 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 8-October-2022 + Last updated: 4-November-2022 Instructions: - [optional] close Firefox and backup your profile @@ -244,6 +244,7 @@ 'browser.ssl_override_behavior', 'browser.tabs.warnOnClose', 'devtools.chrome.enabled', + 'dom.disable_beforeunload', 'dom.netinfo.enabled', 'dom.vr.enabled', 'extensions.formautofill.addresses.supported', From 8a65c5a7bad0ec764d968b0941ebdf01bdcd2408 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 6 Nov 2022 13:28:40 +0000 Subject: [PATCH 125/203] v106 (#1558) --- user.js | 236 +++++++++++--------------------------------------------- 1 file changed, 44 insertions(+), 192 deletions(-) diff --git a/user.js b/user.js index 85f1f36..6eba484 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 5 October 2022 -* version: 105 +* date: 6 November 2022 +* version: 106 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -61,7 +61,7 @@ 6000: DON'T TOUCH 7000: DON'T BOTHER 8000: DON'T BOTHER: FINGERPRINTING - 9000: PERSONAL + 9000: NON-PROJECT RELATED 9999: DEPRECATED / REMOVED / LEGACY / RENAMED ******/ @@ -78,9 +78,6 @@ user_pref("browser.aboutConfig.showWarning", false); /*** [SECTION 0100]: STARTUP ***/ user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!"); -/* 0101: disable default browser check - * [SETTING] General>Startup>Always check if Firefox is your default browser ***/ -user_pref("browser.shell.checkDefaultBrowser", false); /* 0102: set startup page [SETUP-CHROME] * 0=blank, 1=home, 2=last visited page, 3=resume previous session * [NOTE] Session Restore is cleared with history (2811), and not used in Private Browsing mode @@ -519,10 +516,6 @@ user_pref("dom.security.https_only_mode_send_http_background_request", false); * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://bugzilla.mozilla.org/1353705 ***/ user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); -/* 1271: control "Add Security Exception" dialog on SSL warnings - * 0=do neither, 1=pre-populate url, 2=pre-populate url + pre-fetch cert (default) - * [1] https://github.com/pyllyukko/user.js/issues/210 ***/ -user_pref("browser.ssl_override_behavior", 1); /* 1272: display advanced information on Insecure Connection warning pages * only works when it's possible to add an exception * i.e. it doesn't work for HSTS discrepancies (https://subdomain.preloaded-hsts.badssl.com/) @@ -608,10 +601,6 @@ user_pref("media.eme.enabled", false); /*** [SECTION 2400]: DOM (DOCUMENT OBJECT MODEL) ***/ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); -/* 2401: disable "Confirm you want to leave" dialog on page close - * Does not prevent JS leaks of the page close event - * [1] https://developer.mozilla.org/docs/Web/Events/beforeunload ***/ -user_pref("dom.disable_beforeunload", true); /* 2402: prevent scripts from moving and resizing open windows ***/ user_pref("dom.disable_window_move_resize", true); /* 2403: block popup windows @@ -636,10 +625,6 @@ user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /* 2606: disable UITour backend so there is no chance that a remote page can use it ***/ user_pref("browser.uitour.enabled", false); user_pref("browser.uitour.url", ""); -/* 2607: disable various developer tools in browser context - * [SETTING] Devtools>Advanced Settings>Enable browser chrome and add-on debugging toolboxes - * [1] https://github.com/pyllyukko/user.js/issues/179#issuecomment-246468676 ***/ -user_pref("devtools.chrome.enabled", false); /* 2608: reset remote debugging to disabled * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 ***/ user_pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false] @@ -805,14 +790,12 @@ user_pref("privacy.sanitize.timeSpan", 0); 418986 - limit window.screen & CSS media queries (FF41) [TEST] https://arkenfox.github.io/TZP/tzp.html#screen 1281949 - spoof screen orientation (FF50) - 1281963 - hide the contents of navigator.plugins and navigator.mimeTypes (FF50-99) - FF53: fixes GetSupportedNames in nsMimeTypeArray and nsPluginArray (1324044) 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) FF56 1369303 - spoof/disable performance API 1333651 - spoof User Agent & Navigator API - version: spoofed as ESR (FF102+ this is limited to Android) + version: android version spoofed as ESR OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android 1369319 - disable device sensor API 1369357 - disable site specific zoom @@ -825,7 +808,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 1217290 & 1409677 - enable some fingerprinting resistance for WebGL 1382545 - reduce fingerprinting in Animation API 1354633 - limit MediaError.message to a whitelist - FF58-90 + FF58+ 967895 - spoof canvas and enable site permission prompt (FF58) 1372073 - spoof/block fingerprinting in MediaDevices API (FF59) Spoof: enumerate devices as one "Internal Camera" and one "Internal Microphone" @@ -847,10 +830,9 @@ user_pref("privacy.sanitize.timeSpan", 0); 1621433 - randomize canvas (previously FF58+ returned an all-white canvas) (FF78) 1653987 - limit font visibility to bundled and "Base Fonts" (Windows, Mac, some Linux) (FF80) 1461454 - spoof smooth=true and powerEfficient=false for supported media in MediaCapabilities (FF82) - FF91+ 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) - 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was capped at 100ms) (FF102) + 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable privacy.resistFingerprinting [FF41+] @@ -1064,23 +1046,13 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] -/* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ - // user_pref("browser.urlbar.trimURLs", ""); - // user_pref("dom.caches.enabled", ""); - // user_pref("dom.storageManager.enabled", ""); - // user_pref("dom.storage_access.enabled", ""); - // user_pref("dom.targetBlankNoOpener.enabled", ""); - // user_pref("network.cookie.thirdparty.sessionOnly", ""); - // user_pref("network.cookie.thirdparty.nonsecureSessionOnly", ""); - // user_pref("privacy.firstparty.isolate.block_post_message", ""); - // user_pref("privacy.firstparty.isolate.restrict_opener_access", ""); - // user_pref("privacy.firstparty.isolate.use_site", ""); - // user_pref("privacy.window.name.update.enabled", ""); - // user_pref("security.insecure_connection_text.enabled", ""); -/* 6051: prefsCleaner: reset items removed from arkenfox FF102+ ***/ +/* 6050: prefsCleaner: reset items removed from arkenfox FF102+ ***/ // user_pref("browser.newtab.preload", ""); // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); + // user_pref("browser.ssl_override_behavior", ""); + // user_pref("devtools.chrome.enabled", ""); + // user_pref("dom.disable_beforeunload", ""); // user_pref("extensions.formautofill.available", ""); // user_pref("extensions.formautofill.addresses.supported", ""); // user_pref("extensions.formautofill.creditCards.available", ""); @@ -1089,13 +1061,12 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); /* 7001: disable APIs - * Location-Aware Browsing, Full Screen, offline cache (appCache), Virtual Reality - * [WHY] The API state is easily fingerprintable. Geo and VR are behind prompts (7002). + * Location-Aware Browsing, Full Screen, offline cache (appCache) + * [WHY] The API state is easily fingerprintable. Geo is behind a prompt (7002). * appCache storage capability was removed in FF90. Full screen requires user interaction ***/ // user_pref("geo.enabled", false); // user_pref("full-screen-api.enabled", false); // user_pref("browser.cache.offline.enable", false); - // user_pref("dom.vr.enabled", false); // [DEFAULT: false FF97+] /* 7002: set default permissions * Location, Camera, Microphone, Notifications [FF58+] Virtual Reality [FF73+] * 0=always ask (default), 1=allow, 2=block @@ -1143,7 +1114,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7010: disable HTTP Alternative Services [FF37+] * [WHY] Already isolated with network partitioning (FF85+) ***/ // user_pref("network.http.altsvc.enabled", false); - // user_pref("network.http.altsvc.oe", false); // [DEFAULT: false FF94+] /* 7011: disable website control over browser right-click context menu * [WHY] Just use Shift-Right-Click ***/ // user_pref("dom.event.contextmenu.enabled", false); @@ -1195,163 +1165,45 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies [WARNING] DO NOT USE with RFP. RFP already covers these and they can interfere ***/ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan"); -/* 8001: disable APIs ***/ - // user_pref("device.sensors.enabled", false); - // user_pref("dom.enable_performance", false); - // user_pref("dom.enable_resource_timing", false); - // user_pref("dom.gamepad.enabled", false); - // user_pref("dom.netinfo.enabled", false); // [DEFAULT: false NON-ANDROID: false ANDROID FF99+] - // user_pref("dom.webaudio.enabled", false); -/* 8002: disable other ***/ - // user_pref("browser.display.use_document_fonts", 0); - // user_pref("browser.zoom.siteSpecific", false); - // user_pref("dom.w3c_touch_events.enabled", 0); - // user_pref("media.navigator.enabled", false); - // user_pref("media.ondevicechange.enabled", false); - // user_pref("media.video_stats.enabled", false); - // user_pref("media.webspeech.synth.enabled", false); - // user_pref("webgl.enable-debug-renderer-info", false); -/* 8003: spoof ***/ - // user_pref("dom.maxHardwareConcurrency", 2); - // user_pref("font.system.whitelist", ""); // [HIDDEN PREF] - // user_pref("general.appname.override", ""); // [HIDDEN PREF] - // user_pref("general.appversion.override", ""); // [HIDDEN PREF] - // user_pref("general.buildID.override", ""); // [HIDDEN PREF] - // user_pref("general.oscpu.override", ""); // [HIDDEN PREF] - // user_pref("general.platform.override", ""); // [HIDDEN PREF] - // user_pref("general.useragent.override", ""); // [HIDDEN PREF] - // user_pref("ui.use_standins_for_native_colors", true); +/* 8001: prefsCleaner: reset items useless for anti-fingerprinting ***/ + // user_pref("browser.display.use_document_fonts", ""); + // user_pref("browser.zoom.siteSpecific", ""); + // user_pref("device.sensors.enabled", ""); + // user_pref("dom.enable_performance", ""); + // user_pref("dom.enable_resource_timing", ""); + // user_pref("dom.gamepad.enabled", ""); + // user_pref("dom.maxHardwareConcurrency", ""); + // user_pref("dom.w3c_touch_events.enabled", ""); + // user_pref("dom.webaudio.enabled", ""); + // user_pref("font.system.whitelist", ""); + // user_pref("general.appname.override", ""); + // user_pref("general.appversion.override", ""); + // user_pref("general.buildID.override", ""); + // user_pref("general.oscpu.override", ""); + // user_pref("general.platform.override", ""); + // user_pref("general.useragent.override", ""); + // user_pref("media.navigator.enabled", ""); + // user_pref("media.ondevicechange.enabled", ""); + // user_pref("media.video_stats.enabled", ""); + // user_pref("media.webspeech.synth.enabled", ""); + // user_pref("ui.use_standins_for_native_colors", ""); + // user_pref("webgl.enable-debug-renderer-info", ""); -/*** [SECTION 9000]: PERSONAL - Non-project related but useful. If any interest you, add them to your overrides -***/ +/*** [SECTION 9000]: NON-PROJECT RELATED ***/ user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!"); -/* WELCOME & WHAT'S NEW NOTICES ***/ -user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switch - // user_pref("startup.homepage_welcome_url", ""); - // user_pref("startup.homepage_welcome_url.additional", ""); - // user_pref("startup.homepage_override_url", ""); // What's New page after updates -/* WARNINGS ***/ - // user_pref("browser.tabs.warnOnClose", false); // [DEFAULT: false FF94+] - // user_pref("browser.tabs.warnOnCloseOtherTabs", false); - // user_pref("browser.tabs.warnOnOpen", false); - // user_pref("browser.warnOnQuitShortcut", false); // [FF94+] - // user_pref("full-screen-api.warning.delay", 0); - // user_pref("full-screen-api.warning.timeout", 0); -/* UPDATES ***/ - // user_pref("app.update.auto", false); // [NON-WINDOWS] disable auto app updates - // [NOTE] You will still get prompts to update, and should do so in a timely manner - // [SETTING] General>Firefox Updates>Check for updates but let you choose to install them - // user_pref("browser.search.update", false); // disable search engine updates (e.g. OpenSearch) - // [NOTE] This does not affect Mozilla's built-in or Web Extension search engines - // user_pref("extensions.update.enabled", false); // disable extension and theme update checks - // user_pref("extensions.update.autoUpdateDefault", false); // disable installing extension and theme updates - // [SETTING] about:addons>Extensions>[cog-wheel-icon]>Update Add-ons Automatically (toggle) - // user_pref("extensions.getAddons.cache.enabled", false); // disable extension metadata (extension detail tab) -/* APPEARANCE ***/ - // user_pref("browser.download.autohideButton", false); // [FF57+] - // user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); // [FF68+] allow userChrome/userContent - // user_pref("ui.prefersReducedMotion", 1); // disable chrome animations [FF77+] [RESTART] [HIDDEN PREF] - // 0=no-preference, 1=reduce: with RFP this only affects chrome - // user_pref("ui.systemUsesDarkTheme", 1); // [FF67+] [HIDDEN PREF] - // 0=light, 1=dark: with RFP this only affects chrome -/* CONTENT BEHAVIOR ***/ - // user_pref("accessibility.typeaheadfind", true); // enable "Find As You Type" - // user_pref("clipboard.autocopy", false); // disable autocopy default [LINUX] - // user_pref("layout.spellcheckDefault", 2); // 0=none, 1-multi-line, 2=multi-line & single-line -/* FIREFOX HOME CONTENT ***/ - // user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // Recommended by Pocket - // user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); -/* HTML5 MEDIA AUTOPLAY ***/ - // [NOTE] You can set exceptions under site permissions - // user_pref("media.autoplay.default", 5); // [FF63+] - // 0=Allow all, 1=Block non-muted media (default), 5=Block all - // [SETTING] Privacy & Security>Permissions>Autoplay>Settings>Default for all websites - // user_pref("media.autoplay.blocking_policy", 2); // disable autoplay if you interacted with the site [FF78+] - // 0=sticky (default), 1=transient, 2=user - // [1] https://support.mozilla.org/questions/1293231 // links to Autoplay Policy Documentation (PDF) -/* UX BEHAVIOR ***/ - // user_pref("browser.backspace_action", 2); // 0=previous page, 1=scroll up, 2=do nothing - // user_pref("browser.quitShortcut.disabled", true); // disable Ctrl-Q quit shortcut [LINUX] [MAC] [FF87+] - // user_pref("browser.tabs.closeWindowWithLastTab", false); - // user_pref("browser.tabs.loadBookmarksInTabs", true); // open bookmarks in a new tab [FF57+] - // user_pref("browser.urlbar.decodeURLsOnCopy", true); // see bugzilla 1320061 [FF53+] - // user_pref("general.autoScroll", false); // middle-click enabling auto-scrolling [DEFAULT: false on Linux] - // user_pref("ui.key.menuAccessKey", 0); // disable alt key toggling the menu bar [RESTART] - // user_pref("view_source.tab", false); // view "page/selection source" in a new window [FF68+] -/* UX FEATURES ***/ -user_pref("browser.messaging-system.whatsNewPanel.enabled", false); // What's New toolbar icon [FF69+] - // user_pref("extensions.pocket.enabled", false); // Pocket Account [FF46+] - // user_pref("extensions.screenshots.disabled", true); // [FF55+] - // user_pref("identity.fxaccounts.enabled", false); // Firefox Accounts & Sync [FF60+] [RESTART] - // user_pref("reader.parse-on-load.enabled", false); // Reader View -/* OTHER ***/ - // user_pref("browser.bookmarks.max_backups", 2); -user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); // disable CFR [FF67+] - // [SETTING] General>Browsing>Recommend extensions as you browse -user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); // disable CFR [FF67+] - // [SETTING] General>Browsing>Recommend features as you browse - // user_pref("browser.sessionstore.interval", 30000); // minimum interval between session save operations - // Increasing this may help on older machines and some websites, as well as reducing writes (1304389) - // user_pref("network.manage-offline-status", false); // see bugzilla 620472 - // user_pref("xpinstall.signatures.required", false); // enforced extension signing (Nightly/ESR) +/* 9001: disable welcome notices ***/ +user_pref("browser.startup.homepage_override.mstone", "ignore"); +/* 9002: disable General>Browsing>Recommend extensions/features as you browse [FF67+] ***/ +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); +/* 9003: disable What's New toolbar icon [FF69+] ***/ +user_pref("browser.messaging-system.whatsNewPanel.enabled", false); /*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED Documentation denoted as [-]. Items deprecated prior to FF91 have been archived at [1] [1] https://github.com/arkenfox/user.js/issues/123 ***/ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!"); -/* ESR91.x still uses all the following prefs -// [NOTE] replace the * with a slash in the line above to re-enable them -// FF93 -// 7003: disable non-modern cipher suites - // [-] https://bugzilla.mozilla.org/1724072 - // user_pref("security.ssl3.rsa_des_ede3_sha", false); // 3DES -// FF94 -// 1402: limit font visibility (Windows, Mac, some Linux) [FF79+] - replaced by new 1402 - // [-] https://bugzilla.mozilla.org/1715507 - // user_pref("layout.css.font-visibility.level", 1); -// FF95 -// 0807: disable location bar contextual suggestions [FF92+] - replaced by new 0807 - // [-] https://bugzilla.mozilla.org/1735976 -user_pref("browser.urlbar.suggest.quicksuggest", false); -// FF96 -// 0302: disable auto-INSTALLING Firefox updates via a background service + hide the setting [FF90+] [WINDOWS] - // [SETTING] General>Firefox Updates>Automatically install updates>When Firefox is not running - // [1] https://support.mozilla.org/kb/enable-background-updates-firefox-windows - // [-] https://bugzilla.mozilla.org/1738983 -user_pref("app.update.background.scheduling.enabled", false); -// FF97 -// 7006: onions - replaced by new 7006 "allowlist" - // [-] https://bugzilla.mozilla.org/1744006 - // user_pref("dom.securecontext.whitelist_onions", true); // 1382359 -// FF99 -// 6003: enforce CSP (Content Security Policy) - // [1] https://developer.mozilla.org/docs/Web/HTTP/CSP - // [-] https://bugzilla.mozilla.org/1754301 -user_pref("security.csp.enable", true); // [DEFAULT: true] -// FF100 -// 7009: disable HTTP2 - replaced by network.http.http2* prefs - // [WHY] Passive fingerprinting. ~50% of sites use HTTP2 [1] - // [1] https://w3techs.com/technologies/details/ce-http2/all/all - // [-] https://bugzilla.mozilla.org/1752621 - // user_pref("network.http.spdy.enabled", false); - // user_pref("network.http.spdy.enabled.deps", false); - // user_pref("network.http.spdy.enabled.http2", false); - // user_pref("network.http.spdy.websockets", false); // [FF65+] -// FF102 - // 0901: set when Firefox should prompt for the primary password - // 0=once per session (default), 1=every time it's needed, 2=after n minutes (0902) - // [-] https://bugzilla.mozilla.org/1767099 -user_pref("security.ask_for_password", 2); - // 0902: set how long in minutes Firefox should remember the primary password (0901) - // [-] https://bugzilla.mozilla.org/1767099 -user_pref("security.password_lifetime", 5); // [DEFAULT: 30] - // 6007: enforce Local Storage Next Generation (LSNG) [FF65+] - // [-] https://bugzilla.mozilla.org/1764696 -user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] -// ***/ - /* ESR102.x still uses all the following prefs // [NOTE] replace the * with a slash in the line above to re-enable them // FF103 @@ -1362,7 +1214,7 @@ user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] user_pref("network.cookie.lifetimePolicy", 2); // 6012: disable SHA-1 certificates // [-] https://bugzilla.mozilla.org/1766687 -user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1 FF102+] + // user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1] // ***/ /* END: internal custom pref to test for syntax errors ***/ From a93047e6c9fb4d6756ceb89a58a080a604280ce7 Mon Sep 17 00:00:00 2001 From: iTawkins <100447932+iTawkins@users.noreply.github.com> Date: Sun, 13 Nov 2022 14:31:17 +0000 Subject: [PATCH 126/203] Improves usability by clarifying desired action (#1583) --- prefsCleaner.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index da2cfe9..99b8981 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -88,6 +88,7 @@ echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." echo "This will allow inactive preferences to be reset to their default values." echo -e "\nThis Firefox profile shouldn't be in use during the process.\n" +echo -e "\nIn order to proceed, select a command below by entering its corresponding number.\n" [ "$1" == '-s' ] && fStart From 365e76bc9f2c9bf30509ce5f1aec6627ad84c84b Mon Sep 17 00:00:00 2001 From: junoslukan <junos.lukan@protonmail.com> Date: Sun, 13 Nov 2022 14:37:26 +0000 Subject: [PATCH 127/203] Format date and time consistently. (#1580) * Format date and time consistently. Co-authored-by: junos <junos.lukan@ijs.si> Co-authored-by: earthlng <earthlng@users.noreply.github.com> --- prefsCleaner.bat | 11 +++++++---- updater.bat | 9 +++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/prefsCleaner.bat b/prefsCleaner.bat index 616ec28..7591c0e 100644 --- a/prefsCleaner.bat +++ b/prefsCleaner.bat @@ -3,7 +3,7 @@ TITLE prefs.js cleaner REM ### prefs.js cleaner for Windows REM ## author: @claustromaniac -REM ## version: 2.4 +REM ## version: 2.5 CD /D "%~dp0" @@ -13,7 +13,7 @@ ECHO: ECHO ######################################## ECHO #### prefs.js cleaner for Windows #### ECHO #### by claustromaniac #### -ECHO #### v2.4 #### +ECHO #### v2.5 #### ECHO ######################################## ECHO: CALL :message "This script should be run from your Firefox profile directory." @@ -30,9 +30,12 @@ IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory. IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30) CALL :strlenCheck CALL :FFcheck + CALL :message "Backing up prefs.js..." -SET "_time=%time: =0%" -COPY /B /V /Y prefs.js "prefs-backup-%date:/=-%_%_time::=.%.js" +FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j +SET ldt=%ldt:~0,8%_%ldt:~8,6% +COPY /B /V /Y prefs.js "prefs-backup-%ldt%.js" + CALL :message "Cleaning prefs.js..." CALL :cleanup CALL :message "All done!" diff --git a/updater.bat b/updater.bat index eef06f0..83499c2 100644 --- a/updater.bat +++ b/updater.bat @@ -3,10 +3,10 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.16 +REM ## version: 4.17 REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows -SET v=4.15 +SET v=4.17 VERIFY ON CD /D "%~dp0" @@ -177,8 +177,9 @@ IF EXIST user.js.new ( IF DEFINED _singlebackup ( MOVE /Y user.js user.js.bak >nul ) ELSE ( - SET "_time=!time: =0!" - MOVE /Y user.js "user-backup-!date:/=-!_!_time::=.!.js" >nul + FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j + SET ldt=%ldt:~0,8%_%ldt:~8,6% + MOVE /Y user.js "user-backup-%ldt%.js" >nul ) REN user.js.new user.js CALL :message "Update complete." From 5a366493e029d04103b7f2c25c4eee6dc9b40176 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 19 Nov 2022 04:04:59 +0000 Subject: [PATCH 128/203] dom.disable_open_during_load default true since at least FF60 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 1e98e9b..892361f 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 4-November-2022 + Last updated: 19-November-2022 Instructions: - [optional] close Firefox and backup your profile @@ -245,6 +245,7 @@ 'browser.tabs.warnOnClose', 'devtools.chrome.enabled', 'dom.disable_beforeunload', + 'dom.disable_open_during_load', 'dom.netinfo.enabled', 'dom.vr.enabled', 'extensions.formautofill.addresses.supported', From cc0f05388f6c721c358e89372caac604f84fd0d9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 21 Nov 2022 00:36:37 +0000 Subject: [PATCH 129/203] v107 (#1579) --- user.js | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/user.js b/user.js index 6eba484..37c3bd0 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 6 November 2022 -* version: 106 +* date: 21 November 2022 +* version: 107 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -112,8 +112,8 @@ user_pref("geo.provider.use_gpsd", false); // [LINUX] user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] /* 0203: disable region updates * [1] https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html ***/ -user_pref("browser.region.network.url", ""); // [FF78+] user_pref("browser.region.update.enabled", false); // [FF79+] + // user_pref("browser.region.network.url", ""); // [FF78+] Defense-in-depth /* 0204: set search region * [NOTE] May not be hidden if Firefox has changed your settings due to your region (0203) ***/ // user_pref("browser.search.region", "US"); // [HIDDEN PREF] @@ -491,8 +491,8 @@ user_pref("security.remote_settings.crlite_filters.enabled", true); user_pref("security.pki.crlite_mode", 2); /** MIXED CONTENT ***/ -/* 1241: disable insecure passive content (such as images) on https pages [SETUP-WEB] ***/ -user_pref("security.mixed_content.block_display_content", true); +/* 1241: disable insecure passive content (such as images) on https pages ***/ + // user_pref("security.mixed_content.block_display_content", true); // Defense-in-depth (see 1244) /* 1244: enable HTTPS-Only mode in all windows [FF76+] * When the top-level is HTTPS, insecure subresources are also upgraded (silent fail) * [SETTING] to add site exceptions: Padlock>HTTPS-Only mode>On (after "Continue to HTTP Site") @@ -603,9 +603,6 @@ user_pref("media.eme.enabled", false); user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); /* 2402: prevent scripts from moving and resizing open windows ***/ user_pref("dom.disable_window_move_resize", true); -/* 2403: block popup windows - * [SETTING] Privacy & Security>Permissions>Block pop-up windows ***/ -user_pref("dom.disable_open_during_load", true); /* 2404: limit events that can cause a popup [SETUP-WEB] ***/ user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); @@ -624,7 +621,7 @@ user_pref("browser.helperApps.deleteTempFileOnExit", true); user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /* 2606: disable UITour backend so there is no chance that a remote page can use it ***/ user_pref("browser.uitour.enabled", false); -user_pref("browser.uitour.url", ""); + // user_pref("browser.uitour.url", ""); // Defense-in-depth /* 2608: reset remote debugging to disabled * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 ***/ user_pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false] @@ -648,16 +645,16 @@ user_pref("webchannel.allowObject.urlWhitelist", ""); * [3] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=punycode+firefox * [4] https://www.xudongz.com/blog/2017/idn-phishing/ ***/ user_pref("network.IDN_show_punycode", true); -/* 2620: enforce PDFJS, disable PDFJS scripting [SETUP-CHROME] +/* 2620: enforce PDFJS, disable PDFJS scripting * This setting controls if the option "Display in Firefox" is available in the setting below * and by effect controls whether PDFs are handled in-browser or externally ("Ask" or "Open With") - * PROS: pdfjs is lightweight, open source, and more secure/vetted than most - * Exploits are rare (one serious case in seven years), treated seriously and patched quickly. + * [WHY] pdfjs is lightweight, open source, and secure: the last exploit was June 2015 [1] * It doesn't break "state separation" of browser content (by not sharing with OS, independent apps). * It maintains disk avoidance and application data isolation. It's convenient. You can still save to disk. - * CONS: You may prefer a different pdf reader for security reasons - * CAVEAT: JS can still force a pdf to open in-browser by bundling its own code - * [SETTING] General>Applications>Portable Document Format (PDF) ***/ + * [NOTE] JS can still force a pdf to open in-browser by bundling its own code + * [SETUP-CHROME] You may prefer a different pdf reader for security/workflow reasons + * [SETTING] General>Applications>Portable Document Format (PDF) + * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pdf.js+firefox ***/ user_pref("pdfjs.disabled", false); // [DEFAULT: false] user_pref("pdfjs.enableScripting", false); // [FF86+] /* 2621: disable links launching Windows Store on Windows 8/8.1/10 [WINDOWS] ***/ @@ -717,8 +714,8 @@ user_pref("browser.contentblocking.category", "strict"); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] /* 2720: enable APS (Always Partitioning Storage) ***/ -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [FF105+] +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] [DEFAULT: true FF109+} +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [FF105+] [DEFAULT: false FF109+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -809,7 +806,6 @@ user_pref("privacy.sanitize.timeSpan", 0); 1382545 - reduce fingerprinting in Animation API 1354633 - limit MediaError.message to a whitelist FF58+ - 967895 - spoof canvas and enable site permission prompt (FF58) 1372073 - spoof/block fingerprinting in MediaDevices API (FF59) Spoof: enumerate devices as one "Internal Camera" and one "Internal Microphone" Block: suppresses the ondevicechange event @@ -925,7 +921,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow /* 5005: disable intermediate certificate caching [FF41+] [RESTART] * [NOTE] This affects login/cert/key dbs. The effect is all credentials are session-only. * Saved logins and passwords are not available. Reset the pref and restart to return them ***/ - // user_pref("security.nocertdb", true); // [HIDDEN PREF in FF101 or lower] + // user_pref("security.nocertdb", true); /* 5006: disable favicons in history and bookmarks * [NOTE] Stored as data blobs in favicons.sqlite, these don't reveal anything that your * actual history (and bookmarks) already do. Your history is more detailed, so @@ -1053,6 +1049,7 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("browser.ssl_override_behavior", ""); // user_pref("devtools.chrome.enabled", ""); // user_pref("dom.disable_beforeunload", ""); + // user_pref("dom.disable_open_during_load", ""); // user_pref("extensions.formautofill.available", ""); // user_pref("extensions.formautofill.addresses.supported", ""); // user_pref("extensions.formautofill.creditCards.available", ""); @@ -1082,8 +1079,8 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7003: disable non-modern cipher suites [1] * [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks * [1] https://browserleaks.com/ssl ***/ - // user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false); - // user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); + // user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); // [DEFAULT: false FF109+] + // user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false); // [DEFAULT: false FF109+] // user_pref("security.ssl3.ecdhe_rsa_aes_128_sha", false); // user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false); // user_pref("security.ssl3.rsa_aes_128_gcm_sha256", false); // no PFS @@ -1097,7 +1094,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7005: disable SSL session IDs [FF36+] * [WHY] Passive fingerprinting and perf costs. These are session-only * and isolated with network partitioning (FF85+) and/or containers ***/ - // user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF in FF101 or lower] + // user_pref("security.ssl.disable_session_identifiers", true); /* 7006: onions * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 @@ -1146,8 +1143,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] /* 7017: disable service workers - * [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2710) - * or blocked with TCP in 3rd parties (FF95 or lower) ***/ + * [WHY] Already isolated with TCP (2701) behind a pref (2710) ***/ // user_pref("dom.serviceWorkers.enabled", false); /* 7018: disable Web Notifications * [WHY] Web Notifications are behind a prompt (7002) From 5eaa8196e2bb77a8f126781c6f290af93d091070 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Tue, 22 Nov 2022 19:00:47 +0000 Subject: [PATCH 130/203] v4.18 - fix backup filename --- updater.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/updater.bat b/updater.bat index 83499c2..40a6d10 100644 --- a/updater.bat +++ b/updater.bat @@ -3,10 +3,10 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.17 +REM ## version: 4.18 REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows -SET v=4.17 +SET v=4.18 VERIFY ON CD /D "%~dp0" @@ -178,8 +178,8 @@ IF EXIST user.js.new ( MOVE /Y user.js user.js.bak >nul ) ELSE ( FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j - SET ldt=%ldt:~0,8%_%ldt:~8,6% - MOVE /Y user.js "user-backup-%ldt%.js" >nul + SET ldt=!ldt:~0,8!_!ldt:~8,6! + MOVE /Y user.js "user-backup-!ldt!.js" >nul ) REN user.js.new user.js CALL :message "Update complete." From 6789dc7fefac5594d958a065463b4dc9d265c089 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Tue, 22 Nov 2022 19:50:50 +0000 Subject: [PATCH 131/203] fix typo --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 37c3bd0..c3eaab9 100644 --- a/user.js +++ b/user.js @@ -714,7 +714,7 @@ user_pref("browser.contentblocking.category", "strict"); /* 2710: enable state partitioning of service workers [FF96+] ***/ user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] /* 2720: enable APS (Always Partitioning Storage) ***/ -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] [DEFAULT: true FF109+} +user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] [DEFAULT: true FF109+] user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [FF105+] [DEFAULT: false FF109+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ From 40e8e1acbe55dd266a280ab40ab418ca8d9646ec Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 28 Nov 2022 08:11:40 +0000 Subject: [PATCH 132/203] beacon.enabled, see #1586 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 892361f..3928978 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 19-November-2022 + Last updated: 28-November-2022 Instructions: - [optional] close Firefox and backup your profile @@ -238,6 +238,7 @@ /* REMOVED */ /* 103+ */ + 'beacon.enabled', 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', From 45d23f8d75c4cd23be26cfcb32689e60ebbad072 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 2 Dec 2022 10:19:29 +0000 Subject: [PATCH 133/203] region prefs, #1590 --- scratchpad-scripts/arkenfox-cleanup.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 3928978..fa4409b 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 28-November-2022 + Last updated: 2-December-2022 Instructions: - [optional] close Firefox and backup your profile @@ -242,6 +242,9 @@ 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', + 'browser.region.network.url', + 'browser.region.update.enabled', + 'browser.search.region', 'browser.ssl_override_behavior', 'browser.tabs.warnOnClose', 'devtools.chrome.enabled', From e4a85c30c129cf664cc8a39705bb070fce828d33 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 5 Dec 2022 18:48:51 +0000 Subject: [PATCH 134/203] security.tls.version.enable-deprecated the UI for downgrading was removed in FF94, default is false --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index fa4409b..15f59d7 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 2-December-2022 + Last updated: 5-December-2022 Instructions: - [optional] close Firefox and backup your profile @@ -257,6 +257,7 @@ 'extensions.formautofill.creditCards.available', 'extensions.formautofill.creditCards.supported', 'network.http.altsvc.oe', + 'security.tls.version.enable-deprecated', /* 92-102 */ 'browser.urlbar.trimURLs', 'dom.caches.enabled', From 12ca83b550866882c338b354de53287664332560 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sat, 10 Dec 2022 14:00:23 +0000 Subject: [PATCH 135/203] v1.6 - autoupdate --- prefsCleaner.sh | 83 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 71 insertions(+), 12 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 99b8981..dee3f70 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,33 +2,54 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.5 +## version: 1.6 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh -currdir=$(pwd) +## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_prefsCleaner() ) + +readonly CURRDIR=$(pwd) ## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed) -sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null) +SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null) ## fallback for Macs without coreutils -if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi +[ -z "$SCRIPT_FILE" ] && SCRIPT_FILE=${BASH_SOURCE[0]} -## change directory to the Firefox profile directory -cd "$(dirname "${sfp}")" + +AUTOUPDATE=true +QUICKSTART=false + +## download method priority: curl -> wget +DOWNLOAD_METHOD='' +if command -v curl >/dev/null; then + DOWNLOAD_METHOD='curl --max-redirs 3 -so' +elif command -v wget >/dev/null; then + DOWNLOAD_METHOD='wget --max-redirect 3 --quiet -O' +else + AUTOUPDATE=false + echo -e "No curl or wget detected.\nAutomatic self-update disabled!" +fi fQuit() { ## change directory back to the original working directory - cd "${currdir}" + cd "${CURRDIR}" [ "$1" -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2 exit $1 } fUsage() { - echo -e "\nUsage: $0 [-s]" + echo -e "\nUsage: $0 [-ds]" echo -e " Optional Arguments: - -s Start immediately" + -s Start immediately + -d Don't auto-update prefsCleaner.sh" +} + +download_file() { # expects URL as argument ($1) + declare -r tf=$(mktemp) + + $DOWNLOAD_METHOD "${tf}" "$1" &>/dev/null && echo "$tf" || echo '' # return the temp-filename or empty string on error } fFF_check() { @@ -40,6 +61,24 @@ fFF_check() { done } +## returns the version number of a prefsCleaner.sh file +get_prefsCleaner_version() { + echo "$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")" +} + +## updates the prefsCleaner.sh file based on the latest public version +update_prefsCleaner() { + declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/prefsCleaner.sh')" + [ -z "$tmpfile" ] && echo -e "Error! Could not download prefsCleaner.sh" && return 1 # check if download failed + + [[ $(get_prefsCleaner_version "$SCRIPT_FILE") == $(get_prefsCleaner_version "$tmpfile") ]] && return 0 + + mv "$tmpfile" "$SCRIPT_FILE" + chmod u+x "$SCRIPT_FILE" + "$SCRIPT_FILE" -s -d + exit 0 +} + fClean() { # the magic happens here prefs="@@" @@ -78,19 +117,37 @@ fStart() { fQuit 0 "All done!" } + +while getopts "sd" opt; do + case $opt in + s) + QUICKSTART=true + ;; + d) + AUTOUPDATE=false + ;; + esac +done + +## change directory to the Firefox profile directory +cd "$(dirname "${SCRIPT_FILE}")" + +[ "$AUTOUPDATE" = true ] && update_prefsCleaner + echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.5 ║" +echo " ║ v1.6 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." echo "This will allow inactive preferences to be reset to their default values." echo -e "\nThis Firefox profile shouldn't be in use during the process.\n" -echo -e "\nIn order to proceed, select a command below by entering its corresponding number.\n" -[ "$1" == '-s' ] && fStart +[ "$QUICKSTART" = true ] && fStart + +echo -e "\nIn order to proceed, select a command below by entering its corresponding number.\n" select option in Start Help Exit; do case $option in @@ -114,3 +171,5 @@ select option in Start Help Exit; do ;; esac done + +fQuit 0 From 7135907b2fe13fa55eb8ebf162603037f83e353c Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sat, 10 Dec 2022 14:35:48 +0000 Subject: [PATCH 136/203] Update prefsCleaner.sh --- prefsCleaner.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index dee3f70..052905e 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -75,7 +75,7 @@ update_prefsCleaner() { mv "$tmpfile" "$SCRIPT_FILE" chmod u+x "$SCRIPT_FILE" - "$SCRIPT_FILE" -s -d + "$SCRIPT_FILE" "$@" -d exit 0 } @@ -132,7 +132,7 @@ done ## change directory to the Firefox profile directory cd "$(dirname "${SCRIPT_FILE}")" -[ "$AUTOUPDATE" = true ] && update_prefsCleaner +[ "$AUTOUPDATE" = true ] && update_prefsCleaner "$@" echo -e "\n\n" echo " ╔══════════════════════════╗" From f5e54b4a709ca3d58e12e7524e71d3cd7f994515 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 2 Jan 2023 17:15:24 +0000 Subject: [PATCH 137/203] revert security.tls.version.enable-deprecated we kept it in the user js --- scratchpad-scripts/arkenfox-cleanup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 15f59d7..6743ca7 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -257,7 +257,6 @@ 'extensions.formautofill.creditCards.available', 'extensions.formautofill.creditCards.supported', 'network.http.altsvc.oe', - 'security.tls.version.enable-deprecated', /* 92-102 */ 'browser.urlbar.trimURLs', 'dom.caches.enabled', From be376afc1ef9ee6c1eb305768af1da4a3eb1ca1e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 8 Jan 2023 15:20:22 +0000 Subject: [PATCH 138/203] v108 (#1606) --- user.js | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/user.js b/user.js index c3eaab9..6a150db 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 21 November 2022 -* version: 107 +* date: 9 January 2023 +* version: 108 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -110,13 +110,6 @@ user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] user_pref("geo.provider.use_corelocation", false); // [MAC] user_pref("geo.provider.use_gpsd", false); // [LINUX] user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] -/* 0203: disable region updates - * [1] https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html ***/ -user_pref("browser.region.update.enabled", false); // [FF79+] - // user_pref("browser.region.network.url", ""); // [FF78+] Defense-in-depth -/* 0204: set search region - * [NOTE] May not be hidden if Firefox has changed your settings due to your region (0203) ***/ - // user_pref("browser.search.region", "US"); // [HIDDEN PREF] /* 0210: set preferred language for displaying pages * [SETTING] General>Language and Appearance>Language>Choose your preferred language... * [TEST] https://addons.mozilla.org/about ***/ @@ -268,6 +261,7 @@ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost /* 0701: disable IPv6 * IPv6 can be abused, especially with MAC addresses, and can leak with VPNs: assuming * your ISP and/or router and/or website is IPv6 capable. Most sites will fall back to IPv4 + * [SETUP-WEB] PR_CONNECT_RESET_ERROR: this pref *might* be the cause * [STATS] Firefox telemetry (Sept 2022) shows ~8% of successful connections are IPv6 * [NOTE] This is an application level fallback. Disabling IPv6 is best done at an * OS/network level, and/or configured properly in VPN setups. If you are not masking your IP, @@ -477,7 +471,7 @@ user_pref("security.OCSP.require", true); user_pref("security.family_safety.mode", 0); /* 1223: enable strict PKP (Public Key Pinning) * 0=disabled, 1=allow user MiTM (default; such as your antivirus), 2=strict - * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE: If you rely on an AV (antivirus) to protect + * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE * your web browsing by inspecting ALL your web traffic, then override to current default ***/ user_pref("security.cert_pinning.enforcement_level", 2); /* 1224: enable CRLite [FF73+] @@ -565,10 +559,8 @@ user_pref("privacy.userContext.ui.enabled", true); /*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!"); /* 2001: disable WebRTC (Web Real-Time Communication) - * Firefox uses mDNS hostname obfuscation on desktop (except Windows7/8) and the - * private IP is NEVER exposed, except if required in TRUSTED scenarios; i.e. after - * you grant device (microphone or camera) access - * [SETUP-HARDEN] Test first. Windows7/8 users only: behind a proxy who never use WebRTC + * Firefox desktop uses mDNS hostname obfuscation and the private IP is never exposed until + * required in TRUSTED scenarios; i.e. after you grant device (microphone or camera) access * [TEST] https://browserleaks.com/webrtc * [1] https://groups.google.com/g/discuss-webrtc/c/6stQXi72BEU/m/2FwZd24UAQAJ * [2] https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates#section-3.1.1 ***/ @@ -603,7 +595,7 @@ user_pref("media.eme.enabled", false); user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); /* 2402: prevent scripts from moving and resizing open windows ***/ user_pref("dom.disable_window_move_resize", true); -/* 2404: limit events that can cause a popup [SETUP-WEB] ***/ +/* 2404: limit events that can cause a pop-up [SETUP-WEB] ***/ user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); /*** [SECTION 2600]: MISCELLANEOUS ***/ @@ -611,9 +603,6 @@ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curta /* 2601: prevent accessibility services from accessing your browser [RESTART] * [1] https://support.mozilla.org/kb/accessibility-services ***/ user_pref("accessibility.force_disabled", 1); -/* 2602: disable sending additional analytics to web servers - * [1] https://developer.mozilla.org/docs/Web/API/Navigator/sendBeacon ***/ -user_pref("beacon.enabled", false); /* 2603: remove temp files opened with an external application * [1] https://bugzilla.mozilla.org/302433 ***/ user_pref("browser.helperApps.deleteTempFileOnExit", true); @@ -829,6 +818,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) + 1422237 - return "srgb" with color-gamut (FF110) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable privacy.resistFingerprinting [FF41+] @@ -1034,18 +1024,20 @@ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] * In FF96+ these are listed in about:compat * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] -/* 6010: enforce/reset TLS 1.0/1.1 downgrades to session only - * [NOTE] In FF97+ the TLS 1.0/1.1 downgrade UX was removed +/* 6010: enforce no TLS 1.0/1.1 downgrades * [TEST] https://tls-v1-1.badssl.com:1010/ ***/ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] /* 6011: enforce disabling of Web Compatibility Reporter [FF56+] * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] -/* 6050: prefsCleaner: reset items removed from arkenfox FF102+ ***/ +/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF102+ ***/ + // user_pref("beacon.enabled", ""); // user_pref("browser.newtab.preload", ""); // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); + // user_pref("browser.region.network.url", ""); + // user_pref("browser.region.update.enabled", "") // user_pref("browser.ssl_override_behavior", ""); // user_pref("devtools.chrome.enabled", ""); // user_pref("dom.disable_beforeunload", ""); @@ -1194,6 +1186,9 @@ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", fa user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); /* 9003: disable What's New toolbar icon [FF69+] ***/ user_pref("browser.messaging-system.whatsNewPanel.enabled", false); +/* 9004: disable seach terms [FF110+] + * [SETTING] Search > SearchBar > Use the address bar for search and navigation > Show search terms instead of URL... ***/ +user_pref("browser.urlbar.showSearchTerms.enabled", false); /*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED Documentation denoted as [-]. Items deprecated prior to FF91 have been archived at [1] From 62a68f08147123b0c2c288ffdecc3f03e4ab1ae8 Mon Sep 17 00:00:00 2001 From: icpantsparti2 <101484718+icpantsparti2@users.noreply.github.com> Date: Sun, 8 Jan 2023 16:48:25 +0000 Subject: [PATCH 139/203] v108 (#1613) nit: add a ';' to the end of line 1040 --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index 6a150db..6cb9953 100644 --- a/user.js +++ b/user.js @@ -1037,7 +1037,7 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); // user_pref("browser.region.network.url", ""); - // user_pref("browser.region.update.enabled", "") + // user_pref("browser.region.update.enabled", ""); // user_pref("browser.ssl_override_behavior", ""); // user_pref("devtools.chrome.enabled", ""); // user_pref("dom.disable_beforeunload", ""); From b99dd27de828be13530ce2f48c9178d34f5f82ab Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 27 Jan 2023 01:07:25 +0000 Subject: [PATCH 140/203] browser.startup.blankWindow, #1618 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 6743ca7..6e06248 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 5-December-2022 + Last updated: 27-January-2023 Instructions: - [optional] close Firefox and backup your profile @@ -239,6 +239,7 @@ /* REMOVED */ /* 103+ */ 'beacon.enabled', + 'browser.startup.blankWindow', 'browser.newtab.preload', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.snippets', From 82591911670943e629f5bc0a83adb95b2e5909ed Mon Sep 17 00:00:00 2001 From: Keith Harrison <keithh@protonmail.com> Date: Sun, 5 Feb 2023 14:06:49 +0000 Subject: [PATCH 141/203] prefsCleaner.bat: add -unattended flag (#1616) * prefsCleaner.bat: add -unattended flag Usage: prefsCleaner.bat -unattended Skips the prompt for user input and proceeds when -unattended is specified. If omitted, default behaviour is unchanged. --------- Signed-off-by: Keith Harrison <keithh@protonmail.com> Co-authored-by: earthlng <earthlng@users.noreply.github.com> --- prefsCleaner.bat | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/prefsCleaner.bat b/prefsCleaner.bat index 7591c0e..d266b3f 100644 --- a/prefsCleaner.bat +++ b/prefsCleaner.bat @@ -3,17 +3,19 @@ TITLE prefs.js cleaner REM ### prefs.js cleaner for Windows REM ## author: @claustromaniac -REM ## version: 2.5 +REM ## version: 2.6 CD /D "%~dp0" +IF /I "%~1"=="-unattended" (SET _ua=1) + :begin ECHO: ECHO: ECHO ######################################## ECHO #### prefs.js cleaner for Windows #### ECHO #### by claustromaniac #### -ECHO #### v2.5 #### +ECHO #### v2.6 #### ECHO ######################################## ECHO: CALL :message "This script should be run from your Firefox profile directory." @@ -22,10 +24,13 @@ CALL :message "This will allow inactive preferences to be reset to their default ECHO This Firefox profile shouldn't be in use during the process. CALL :message "" TIMEOUT 1 /nobreak >nul -CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]" -CLS -IF ERRORLEVEL 3 (EXIT /B) -IF ERRORLEVEL 2 (GOTO :showhelp) + +IF NOT DEFINED _ua ( + CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]" + CLS + IF ERRORLEVEL 3 (EXIT /B) + IF ERRORLEVEL 2 (GOTO :showhelp) +) IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory." 30) IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30) CALL :strlenCheck From 73884850632ffe284f76881786f7d5903b917f58 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 7 Feb 2023 00:02:45 +0000 Subject: [PATCH 142/203] v109 (#1614) --- user.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/user.js b/user.js index 6cb9953..4217d61 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 9 January 2023 -* version: 108 +* date: 7 February 2023 +* version: 109 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -471,8 +471,7 @@ user_pref("security.OCSP.require", true); user_pref("security.family_safety.mode", 0); /* 1223: enable strict PKP (Public Key Pinning) * 0=disabled, 1=allow user MiTM (default; such as your antivirus), 2=strict - * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE - * your web browsing by inspecting ALL your web traffic, then override to current default ***/ + * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE ***/ user_pref("security.cert_pinning.enforcement_level", 2); /* 1224: enable CRLite [FF73+] * 0 = disabled @@ -595,8 +594,6 @@ user_pref("media.eme.enabled", false); user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); /* 2402: prevent scripts from moving and resizing open windows ***/ user_pref("dom.disable_window_move_resize", true); -/* 2404: limit events that can cause a pop-up [SETUP-WEB] ***/ -user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); /*** [SECTION 2600]: MISCELLANEOUS ***/ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); @@ -606,8 +603,6 @@ user_pref("accessibility.force_disabled", 1); /* 2603: remove temp files opened with an external application * [1] https://bugzilla.mozilla.org/302433 ***/ user_pref("browser.helperApps.deleteTempFileOnExit", true); -/* 2604: disable page thumbnail collection ***/ -user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /* 2606: disable UITour backend so there is no chance that a remote page can use it ***/ user_pref("browser.uitour.enabled", false); // user_pref("browser.uitour.url", ""); // Defense-in-depth @@ -853,10 +848,6 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] // user_pref("privacy.resistFingerprinting.testGranularityMask", 0); /* 4506: set RFP's font visibility level (1402) [FF94+] ***/ // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] -/* 4507: disable showing about:blank as soon as possible during startup [FF60+] - * When default true this no longer masks the RFP chrome resizing activity - * [1] https://bugzilla.mozilla.org/1448423 ***/ -user_pref("browser.startup.blankWindow", false); /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] @@ -963,6 +954,10 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] // user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] +/* 5017: limit events that can cause a pop-up ***/ + // user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); +/* 5018: disable page thumbnail collection ***/ + // user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /*** [SECTION 5500]: OPTIONAL HARDENING Not recommended. Overriding these can cause breakage and performance issues, @@ -1033,6 +1028,7 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF102+ ***/ // user_pref("beacon.enabled", ""); + // user_pref("browser.startup.blankWindow", ""); // user_pref("browser.newtab.preload", ""); // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); @@ -1186,8 +1182,8 @@ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", fa user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); /* 9003: disable What's New toolbar icon [FF69+] ***/ user_pref("browser.messaging-system.whatsNewPanel.enabled", false); -/* 9004: disable seach terms [FF110+] - * [SETTING] Search > SearchBar > Use the address bar for search and navigation > Show search terms instead of URL... ***/ +/* 9004: disable search terms [FF110+] + * [SETTING] Search>Search Bar>Use the address bar for search and navigation>Show search terms instead of URL... ***/ user_pref("browser.urlbar.showSearchTerms.enabled", false); /*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED From ca022d8c2d2d8b2e149fd34a696284759e566f4e Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:21:21 +0000 Subject: [PATCH 143/203] v4.19 - use Powershell for locale-independent TS --- updater.bat | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/updater.bat b/updater.bat index 40a6d10..f6174f7 100644 --- a/updater.bat +++ b/updater.bat @@ -3,10 +3,10 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.18 +REM ## version: 4.19 REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows -SET v=4.18 +SET v=4.19 VERIFY ON CD /D "%~dp0" @@ -177,8 +177,7 @@ IF EXIST user.js.new ( IF DEFINED _singlebackup ( MOVE /Y user.js user.js.bak >nul ) ELSE ( - FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j - SET ldt=!ldt:~0,8!_!ldt:~8,6! + FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# MOVE /Y user.js "user-backup-!ldt!.js" >nul ) REN user.js.new user.js From d13f39d9f9c4dae6f7034fe8b4f29e5893a5abdc Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Mar 2023 03:26:12 +0000 Subject: [PATCH 144/203] v110 (#1629) --- user.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/user.js b/user.js index 4217d61..bf931b2 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 7 February 2023 -* version: 109 +* date: 12 March 2023 +* version: 110 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -557,13 +557,6 @@ user_pref("privacy.userContext.ui.enabled", true); /*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!"); -/* 2001: disable WebRTC (Web Real-Time Communication) - * Firefox desktop uses mDNS hostname obfuscation and the private IP is never exposed until - * required in TRUSTED scenarios; i.e. after you grant device (microphone or camera) access - * [TEST] https://browserleaks.com/webrtc - * [1] https://groups.google.com/g/discuss-webrtc/c/6stQXi72BEU/m/2FwZd24UAQAJ - * [2] https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates#section-3.1.1 ***/ - // user_pref("media.peerconnection.enabled", false); /* 2002: force WebRTC inside the proxy [FF70+] ***/ user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); /* 2003: force a single network interface for ICE candidates generation [FF42+] @@ -954,9 +947,9 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] // user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] -/* 5017: limit events that can cause a pop-up ***/ +/* 5018: limit events that can cause a pop-up ***/ // user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); -/* 5018: disable page thumbnail collection ***/ +/* 5019: disable page thumbnail collection ***/ // user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /*** [SECTION 5500]: OPTIONAL HARDENING @@ -1143,6 +1136,13 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" * [1] https://support.mozilla.org/kb/push-notifications-firefox ***/ // user_pref("dom.push.enabled", false); +/* 7020: disable WebRTC (Web Real-Time Communication) + * [WHY] Firefox desktop uses mDNS hostname obfuscation and the private IP is never exposed until + * required in TRUSTED scenarios; i.e. after you grant device (microphone or camera) access + * [TEST] https://browserleaks.com/webrtc + * [1] https://groups.google.com/g/discuss-webrtc/c/6stQXi72BEU/m/2FwZd24UAQAJ + * [2] https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates#section-3.1.1 ***/ + // user_pref("media.peerconnection.enabled", false); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING [WHY] They are insufficient to help anti-fingerprinting and do more harm than good From e2e8c4ea8f9c8034a2ff72fe3c2d4a4a89404c10 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 13 Mar 2023 07:13:07 +0000 Subject: [PATCH 145/203] add arkenfox/gui --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2f33ad9..1a27d8a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A `user.js` is a configuration file that can control Firefox settings - for a mo The `arkenfox user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen). -Everyone, experts included, should at least read the [wiki](https://github.com/arkenfox/user.js/wiki), as it contains important information regarding a few `user.js` settings. +Everyone, experts included, should at least read the [wiki](https://github.com/arkenfox/user.js/wiki), as it contains important information regarding a few `user.js` settings. There is also an [interactive current release](https://arkenfox.github.io/gui/), thanks to [icpantsparti2](https://github.com/icpantsparti2). Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://2019.www.torproject.org/about/torusers.html) calls for it, or for accessing hidden services. From bdaa2867b923669361a8527065e919c839668599 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sun, 19 Mar 2023 11:16:40 +0000 Subject: [PATCH 146/203] v2.7 - use Powershell for locale-independent TS fixes #1624 --- prefsCleaner.bat | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/prefsCleaner.bat b/prefsCleaner.bat index d266b3f..2e3403f 100644 --- a/prefsCleaner.bat +++ b/prefsCleaner.bat @@ -3,7 +3,7 @@ TITLE prefs.js cleaner REM ### prefs.js cleaner for Windows REM ## author: @claustromaniac -REM ## version: 2.6 +REM ## version: 2.7 CD /D "%~dp0" @@ -15,7 +15,7 @@ ECHO: ECHO ######################################## ECHO #### prefs.js cleaner for Windows #### ECHO #### by claustromaniac #### -ECHO #### v2.6 #### +ECHO #### v2.7 #### ECHO ######################################## ECHO: CALL :message "This script should be run from your Firefox profile directory." @@ -37,8 +37,7 @@ CALL :strlenCheck CALL :FFcheck CALL :message "Backing up prefs.js..." -FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j -SET ldt=%ldt:~0,8%_%ldt:~8,6% +FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# COPY /B /V /Y prefs.js "prefs-backup-%ldt%.js" CALL :message "Cleaning prefs.js..." From c84c419544cbbe4442190cc6325b926b519d8db5 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 30 Mar 2023 04:50:25 +0000 Subject: [PATCH 147/203] v111 (#1650) --- user.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/user.js b/user.js index bf931b2..3e3b84c 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 12 March 2023 -* version: 110 +* date: 30 March 2023 +* version: 111 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -262,7 +262,7 @@ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost * IPv6 can be abused, especially with MAC addresses, and can leak with VPNs: assuming * your ISP and/or router and/or website is IPv6 capable. Most sites will fall back to IPv4 * [SETUP-WEB] PR_CONNECT_RESET_ERROR: this pref *might* be the cause - * [STATS] Firefox telemetry (Sept 2022) shows ~8% of successful connections are IPv6 + * [STATS] Firefox telemetry (Feb 2023) shows ~9% of successful connections are IPv6 * [NOTE] This is an application level fallback. Disabling IPv6 is best done at an * OS/network level, and/or configured properly in VPN setups. If you are not masking your IP, * then this won't make much difference. If you are masking your IP, then it can only help. @@ -426,7 +426,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * but the problem is that the browser can't know that. Setting this pref to true is the only way for the * browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server * [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site? - * [STATS] SSL Labs (Sept 2022) reports over 99.3% of top sites have secure renegotiation [4] + * [STATS] SSL Labs (Feb 2023) reports over 99.3% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 @@ -875,7 +875,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow * caches, searches, cookies, localStorage, IndexedDB etc (which you can achieve in normal mode). * In fact, PB mode limits or removes the ability to control some of these, and you need to quit * Firefox to clear them. PB is best used as a one off window (Menu>New Private Window) to provide - * a temporary self-contained new session. Close all Private Windows to clear the PB mode session. + * a temporary self-contained new session. Close all private windows to clear the PB session. * [SETTING] Privacy & Security>History>Custom Settings>Always use private browsing mode * [1] https://wiki.mozilla.org/Private_Browsing * [2] https://support.mozilla.org/kb/common-myths-about-private-browsing ***/ @@ -951,6 +951,8 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); /* 5019: disable page thumbnail collection ***/ // user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] +/* 5020: disable Windows native notifications and use app notications instead [FF111+] [WINDOWS] ***/ + // user_pref("alerts.useSystemBackend.windows.notificationserver.enabled", false); /*** [SECTION 5500]: OPTIONAL HARDENING Not recommended. Overriding these can cause breakage and performance issues, From f2e4a79ca0220aa2ad87e76ff59f5cbc37c5f373 Mon Sep 17 00:00:00 2001 From: Celestial Nebula <41875671+CelestialNebula@users.noreply.github.com> Date: Sat, 22 Apr 2023 11:52:26 +0000 Subject: [PATCH 148/203] updater.sh/prefsCleaner.sh: Check for root and abort (#1651) * updater.sh/prefsCleaner.sh: Check for root and abort Check if running as root and if any files have the owner/group as root|wheel. Abort on both. Should (hopefully) prevent stuff like: https://github.com/arkenfox/user.js/issues/1587 Discussion: https://github.com/arkenfox/user.js/pull/1595 --------- Co-authored-by: Mohammed Anas <triallax@tutanota.com> Co-authored-by: earthlng <earthlng@users.noreply.github.com> --- prefsCleaner.sh | 15 +++++++++++++-- updater.sh | 13 ++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 052905e..9aa89f0 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,12 +2,23 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.6 +## version: 1.7 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_prefsCleaner() ) +# Check if running as root and if any files have the owner/group as root/wheel. +if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then + printf 'You shouldn't run this with elevated privileges (such as with doas/sudo).\n' + exit 1 +elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then + printf 'It looks like this script was previously run with elevated privileges, +you will need to change ownership of the following files to your user:\n' + find . -user 0 -o -group 0 + exit 1 +fi + readonly CURRDIR=$(pwd) ## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed) @@ -138,7 +149,7 @@ echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.6 ║" +echo " ║ v1.7 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." diff --git a/updater.sh b/updater.sh index bf275c5..0f544d0 100755 --- a/updater.sh +++ b/updater.sh @@ -2,12 +2,23 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.5 +## version: 3.6 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_updater() ) +# Check if running as root and if any files have the owner/group as root/wheel. +if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then + printf 'You shouldn't run this with elevated privileges (such as with doas/sudo).\n' + exit 1 +elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then + printf 'It looks like this script was previously run with elevated privileges, +you will need to change ownership of the following files to your user:\n' + find . -user 0 -o -group 0 + exit 1 +fi + readonly CURRDIR=$(pwd) SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null) From 7a1d0a92af95d152349830d027648fa299b9bcba Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sun, 23 Apr 2023 09:13:13 +0000 Subject: [PATCH 149/203] v3.7 - fix syntax error --- updater.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/updater.sh b/updater.sh index 0f544d0..9f4b46b 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.6 +## version: 3.7 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp @@ -10,7 +10,7 @@ # Check if running as root and if any files have the owner/group as root/wheel. if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf 'You shouldn't run this with elevated privileges (such as with doas/sudo).\n' + printf 'You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n' exit 1 elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, From d50c772d7d28b0a49e19e5ded6dcb0c4e52717be Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sun, 23 Apr 2023 09:14:03 +0000 Subject: [PATCH 150/203] v1.8 - fix syntax error --- prefsCleaner.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 9aa89f0..c62f070 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,7 +2,7 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.7 +## version: 1.8 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh @@ -10,7 +10,7 @@ # Check if running as root and if any files have the owner/group as root/wheel. if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf 'You shouldn't run this with elevated privileges (such as with doas/sudo).\n' + printf 'You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n' exit 1 elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, @@ -149,7 +149,7 @@ echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.7 ║" +echo " ║ v1.8 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." From 2f4b93a18fe610435f7142c3a23baa7e247d9613 Mon Sep 17 00:00:00 2001 From: bol0gna <75225753+bol0gna@users.noreply.github.com> Date: Mon, 24 Apr 2023 12:56:29 -0400 Subject: [PATCH 151/203] fix escape character, should close #1667 (#1668) --- updater.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/updater.sh b/updater.sh index 9f4b46b..6a3d1f2 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.7 +## version: 3.8 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp @@ -10,7 +10,7 @@ # Check if running as root and if any files have the owner/group as root/wheel. if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf 'You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n' + printf "You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n" exit 1 elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, From b117916207862d4785f6da32d48cbe4420372434 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Mon, 24 Apr 2023 16:58:19 +0000 Subject: [PATCH 152/203] Update prefsCleaner.sh --- prefsCleaner.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index c62f070..f36732c 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,7 +2,7 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.8 +## version: 1.9 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh @@ -10,7 +10,7 @@ # Check if running as root and if any files have the owner/group as root/wheel. if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf 'You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n' + printf "You shouldn't run this with elevated privileges (such as with doas/sudo).\n" exit 1 elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, @@ -149,7 +149,7 @@ echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.8 ║" +echo " ║ v1.9 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." From bc5add9450ddc16c48d315913c43dba34baf4a24 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 4 May 2023 23:31:33 +0000 Subject: [PATCH 153/203] v112 (#1654) --- user.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/user.js b/user.js index 3e3b84c..7b0962d 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 30 March 2023 -* version: 111 +* date: 4 May 2023 +* version: 112 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -491,7 +491,7 @@ user_pref("security.pki.crlite_mode", 2); * [SETTING] to add site exceptions: Padlock>HTTPS-Only mode>On (after "Continue to HTTP Site") * [SETTING] Privacy & Security>HTTPS-Only Mode (and manage exceptions) * [TEST] http://example.com [upgrade] - * [TEST] http://httpforever.com/ [no upgrade] ***/ + * [TEST] http://httpforever.com/ | http://http.rip [no upgrade] ***/ user_pref("dom.security.https_only_mode", true); // [FF76+] // user_pref("dom.security.https_only_mode_pbm", true); // [FF80+] /* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/ @@ -1007,8 +1007,8 @@ user_pref("network.http.referer.spoofSource", false); // [DEFAULT: false] * [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/ user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] /* 6008: enforce no First Party Isolation [FF51+] - * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), - * and enabling FPI disables those. FPI is no longer maintained ***/ + * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), and enabling FPI + * disables those. FPI is no longer maintained except at Tor Project for Tor Browser's config ***/ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] /* 6009: enforce SmartBlock shims [FF81+] * In FF96+ these are listed in about:compat From 04e6e77439bfa6e3f6b7b9c5e0afac7f74f0586a Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Fri, 5 May 2023 10:56:08 +0000 Subject: [PATCH 154/203] v3.9 - fix #1670 --- updater.sh | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/updater.sh b/updater.sh index 6a3d1f2..88e6e33 100755 --- a/updater.sh +++ b/updater.sh @@ -2,20 +2,15 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.8 +## version: 3.9 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_updater() ) -# Check if running as root and if any files have the owner/group as root/wheel. +# Check if running as root if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf "You shouldn\'t run this with elevated privileges (such as with doas/sudo).\n" - exit 1 -elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then - printf 'It looks like this script was previously run with elevated privileges, -you will need to change ownership of the following files to your user:\n' - find . -user 0 -o -group 0 + printf "You shouldn't run this with elevated privileges (such as with doas/sudo).\n" exit 1 fi @@ -396,6 +391,17 @@ show_banner update_updater "$@" getProfilePath # updates PROFILE_PATH or exits on error -cd "$PROFILE_PATH" && update_userjs +cd "$PROFILE_PATH" || exit 1 + +# Check if any files have the owner/group as root/wheel. +if [ -n "$(find ./ -user 0 -o -group 0)" ]; then + printf 'It looks like this script was previously run with elevated privileges, +you will need to change ownership of the following files to your user:\n' + find . -user 0 -o -group 0 + cd "$CURRDIR" + exit 1 +fi + +update_userjs cd "$CURRDIR" From c34531b67e0b9d162331fa92dc0eae2548d13fc7 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 21 Jun 2023 03:29:51 +0000 Subject: [PATCH 155/203] 114 deprecated --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 6e06248..9245fc4 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 27-January-2023 + Last updated: 21-June-2023 Instructions: - [optional] close Firefox and backup your profile @@ -34,6 +34,8 @@ /* DEPRECATED */ /* 103+ */ 'network.cookie.lifetimePolicy', // 103 [technically removed in 104] + 'privacy.clearsitedata.cache.enabled', // 114 + 'privacy.resistFingerprinting.testGranularityMask', // 114 'security.pki.sha1_enforcement_level', // 103 /* 92-102 */ 'browser.urlbar.suggest.quicksuggest', // 95 From 84d515abfc631f1c824211bc609960a430ba334a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:44:53 +0000 Subject: [PATCH 156/203] extensions.formautofill.heuristics.enabled --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 9245fc4..7c3f150 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 21-June-2023 + Last updated: 11-July-2023 Instructions: - [optional] close Firefox and backup your profile @@ -33,6 +33,7 @@ const aPREFS = [ /* DEPRECATED */ /* 103+ */ + 'extensions.formautofill.heuristics.enabled', // 114 'network.cookie.lifetimePolicy', // 103 [technically removed in 104] 'privacy.clearsitedata.cache.enabled', // 114 'privacy.resistFingerprinting.testGranularityMask', // 114 From 47f152ac90d5962e0cd29ebcf8b607caa650d41d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 10 Jul 2023 13:35:52 +0000 Subject: [PATCH 157/203] browser.cache.offline.enable --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 7c3f150..94aaa73 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -32,7 +32,8 @@ const aPREFS = [ /* DEPRECATED */ - /* 103+ */ + /* 103-115 */ + 'browser.cache.offline.enable', // 115 'extensions.formautofill.heuristics.enabled', // 114 'network.cookie.lifetimePolicy', // 103 [technically removed in 104] 'privacy.clearsitedata.cache.enabled', // 114 From 6151d664acced94364e7e3a075e6ac3ca555ef48 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 19 Jul 2023 20:38:31 +0000 Subject: [PATCH 158/203] middlemouse.contentLoadURL --- scratchpad-scripts/arkenfox-cleanup.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 94aaa73..5c0191a 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 11-July-2023 + Last updated: 20-July-2023 Instructions: - [optional] close Firefox and backup your profile @@ -241,7 +241,7 @@ 'toolkit.telemetry.unifiedIsOptIn', /* REMOVED */ - /* 103+ */ + /* 103-115 */ 'beacon.enabled', 'browser.startup.blankWindow', 'browser.newtab.preload', @@ -261,6 +261,7 @@ 'extensions.formautofill.available', 'extensions.formautofill.creditCards.available', 'extensions.formautofill.creditCards.supported', + 'middlemouse.contentLoadURL', 'network.http.altsvc.oe', /* 92-102 */ 'browser.urlbar.trimURLs', From 4d78abf2bfafbbcb03f8f6d6aaaf7e69b7cfee4e Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 26 Jul 2023 04:37:00 +0000 Subject: [PATCH 159/203] v115 (#1680) --- user.js | 67 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/user.js b/user.js index 7b0962d..5ed7c08 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 4 May 2023 -* version: 112 +* date: 26 July 2023 +* version: 115 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -116,7 +116,6 @@ user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] user_pref("intl.accept_languages", "en-US, en"); /* 0211: use en-US locale regardless of the system or region locale * [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1] - * [TEST] https://arkenfox.github.io/TZP/tests/formatting.html * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 ***/ user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] @@ -296,10 +295,11 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] * [WARNING] If false, this will break the fallback for some security features * [SETUP-CHROME] If you use a proxy and you understand the security impact * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1732792,1733994,1733481 ***/ - // user_pref("network.proxy.allow_bypass", false); // [HIDDEN PREF FF95-96] + // user_pref("network.proxy.allow_bypass", false); /* 0710: disable DNS-over-HTTPS (DoH) rollout [FF60+] - * 0=off by default, 2=TRR (Trusted Recursive Resolver) first, 3=TRR only, 5=explicitly off + * 0=default, 2=increased (TRR (Trusted Recursive Resolver) first), 3=max (TRR only), 5=off * see "doh-rollout.home-region": USA 2019, Canada 2021, Russia/Ukraine 2022 [3] + * [SETTING] Privacy & Security>DNS over HTTPS * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/ * [2] https://wiki.mozilla.org/Security/DOH-resolver-policy * [3] https://support.mozilla.org/en-US/kb/firefox-dns-over-https @@ -602,9 +602,6 @@ user_pref("browser.uitour.enabled", false); /* 2608: reset remote debugging to disabled * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 ***/ user_pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false] -/* 2611: disable middle mouse click opening links from clipboard - * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/10089 ***/ -user_pref("middlemouse.contentLoadURL", false); /* 2615: disable websites overriding Firefox's keyboard shortcuts [FF58+] * 0 (default) or 1=allow, 2=block * [SETTING] to add site exceptions: Ctrl+I>Permissions>Override Keyboard Shortcuts ***/ @@ -642,6 +639,8 @@ user_pref("network.protocol-handler.external.ms-windows-store", false); * for these will show/use their correct 3rd party origin * [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion ***/ user_pref("permissions.delegation.enabled", false); +/* 2624: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] */ +user_pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: false NON-LINUX] /** DOWNLOADS ***/ /* 2651: enable user interaction for security by always asking where to download @@ -727,10 +726,6 @@ user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ user_pref("privacy.clearOnShutdown.cookies", true); // Cookies user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data -/* 2816: set cache to clear on exit [FF96+] - * [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust - * [1] https://bugzilla.mozilla.org/1671182 ***/ - // user_pref("privacy.clearsitedata.cache.enabled", true); /** SANITIZE MANUAL: IGNORES "ALLOW" SITE EXCEPTIONS ***/ /* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] @@ -758,11 +753,11 @@ user_pref("privacy.sanitize.timeSpan", 0); /*** [SECTION 4500]: RFP (RESIST FINGERPRINTING) RFP covers a wide range of ongoing fingerprinting solutions. It is an all-or-nothing buy in: you cannot pick and choose what parts you want + [TEST] https://arkenfox.github.io/TZP/tzp.html [WARNING] DO NOT USE extensions to alter RFP protected metrics 418986 - limit window.screen & CSS media queries (FF41) - [TEST] https://arkenfox.github.io/TZP/tzp.html#screen 1281949 - spoof screen orientation (FF50) 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) @@ -801,19 +796,23 @@ user_pref("privacy.sanitize.timeSpan", 0); 1595823 - return audioContext sampleRate as 44100 (FF72) 1607316 - spoof pointer as coarse and hover as none (ANDROID) (FF74) 1621433 - randomize canvas (previously FF58+ returned an all-white canvas) (FF78) + 1506364 - return "no-preference" with prefers-contrast (FF80) 1653987 - limit font visibility to bundled and "Base Fonts" (Windows, Mac, some Linux) (FF80) 1461454 - spoof smooth=true and powerEfficient=false for supported media in MediaCapabilities (FF82) 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) 1422237 - return "srgb" with color-gamut (FF110) + 1794628 - return "none" with inverted-colors (FF114) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); -/* 4501: enable privacy.resistFingerprinting [FF41+] +/* 4501: enable privacy.resistFingerprinting * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a site exception via the urlbar * RFP also has a few side effects: mainly timezone is UTC0, and websites will prefer light theme + * [NOTE] pbmode applies if true and the original pref is false * [1] https://bugzilla.mozilla.org/418986 ***/ -user_pref("privacy.resistFingerprinting", true); +user_pref("privacy.resistFingerprinting", true); // [FF41+] + // user_pref("privacy.resistFingerprinting.pbmode", true); // [FF114+] /* 4502: set new window size rounding max values [FF55+] * [SETUP-CHROME] sizes round down in hundreds: width to 200s and height to 100s, to fit your screen * [1] https://bugzilla.mozilla.org/1330882 ***/ @@ -822,7 +821,7 @@ user_pref("privacy.window.maxInnerHeight", 900); /* 4503: disable mozAddonManager Web API [FF57+] * [NOTE] To allow extensions to work on AMO, you also need 2662 * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ -user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF] +user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF FF57-108] /* 4504: enable RFP letterboxing [FF67+] * Dynamically resizes the inner window by applying margins in stepped ranges [2] * If you use the dimension pref, then it will only apply those resolutions. @@ -838,7 +837,6 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] * [WARNING] DO NOT USE unless testing, see [1] comment 12 * [1] https://bugzilla.mozilla.org/1635603 ***/ // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); - // user_pref("privacy.resistFingerprinting.testGranularityMask", 0); /* 4506: set RFP's font visibility level (1402) [FF94+] ***/ // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] /* 4510: disable using system colors @@ -941,12 +939,10 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow /* 5017: disable Form Autofill * If .supportedCountries includes your region (browser.search.region) and .supported * is "detect" (default), then the UI will show. Stored data is not secure, uses JSON - * [NOTE] Heuristics controls Form Autofill on forms without @autocomplete attributes * [SETTING] Privacy & Security>Forms and Autofill>Autofill addresses * [1] https://wiki.mozilla.org/Firefox/Features/Form_Autofill ***/ // user_pref("extensions.formautofill.addresses.enabled", false); // [FF55+] // user_pref("extensions.formautofill.creditCards.enabled", false); // [FF56+] - // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] /* 5018: limit events that can cause a pop-up ***/ // user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); /* 5019: disable page thumbnail collection ***/ @@ -1021,6 +1017,9 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] * Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * [WHY] To prevent wasting Mozilla's time with a custom setup ***/ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] +/* 6012: enforce Quarantined Domains [FF115+] + * [WHY] https://support.mozilla.org/kb/quarantined-domains */ +user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF102+ ***/ // user_pref("beacon.enabled", ""); // user_pref("browser.startup.blankWindow", ""); @@ -1037,16 +1036,16 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] // user_pref("extensions.formautofill.addresses.supported", ""); // user_pref("extensions.formautofill.creditCards.available", ""); // user_pref("extensions.formautofill.creditCards.supported", ""); + // user_pref("middlemouse.contentLoadURL", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); /* 7001: disable APIs - * Location-Aware Browsing, Full Screen, offline cache (appCache) - * [WHY] The API state is easily fingerprintable. Geo is behind a prompt (7002). - * appCache storage capability was removed in FF90. Full screen requires user interaction ***/ + * Location-Aware Browsing, Full Screen + * [WHY] The API state is easily fingerprintable. + * Geo is behind a prompt (7002). Full screen requires user interaction ***/ // user_pref("geo.enabled", false); // user_pref("full-screen-api.enabled", false); - // user_pref("browser.cache.offline.enable", false); /* 7002: set default permissions * Location, Camera, Microphone, Notifications [FF58+] Virtual Reality [FF73+] * 0=always ask (default), 1=allow, 2=block @@ -1194,9 +1193,9 @@ user_pref("browser.urlbar.showSearchTerms.enabled", false); ***/ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!"); /* ESR102.x still uses all the following prefs -// [NOTE] replace the * with a slash in the line above to re-enable them +// [NOTE] replace the * with a slash in the line above to re-enable active ones // FF103 - // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) +// 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) // 0=keep until they expire (default), 2=keep until you close Firefox // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665,1764761 @@ -1204,6 +1203,24 @@ user_pref("network.cookie.lifetimePolicy", 2); // 6012: disable SHA-1 certificates // [-] https://bugzilla.mozilla.org/1766687 // user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1] +// FF114 +// 2816: set cache to clear on exit [FF96+] + // [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust + // [1] https://bugzilla.mozilla.org/1671182 + // [-] https://bugzilla.mozilla.org/1821651 + // user_pref("privacy.clearsitedata.cache.enabled", true); +// 4505: experimental RFP [FF91+] + // [-] https://bugzilla.mozilla.org/1824235 + // user_pref("privacy.resistFingerprinting.testGranularityMask", 0); +// 5017: disable Form Autofill heuristics + // Heuristics controls Form Autofill on forms without @autocomplete attributes + // [-] https://bugzilla.mozilla.org/1829670 + // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] +// FF115 + // 7001: disable offline cache (appCache) + // [NOTE] appCache storage capability was removed in FF90 + // [-] https://bugzilla.mozilla.org/1677718 + // user_pref("browser.cache.offline.enable", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From 915f39959c7e077f00477e6ce34a0f9f9e3e7c6b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 14 Aug 2023 03:27:30 +0000 Subject: [PATCH 160/203] external.ms-windows-store, fixes #1142 --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 5c0191a..706fbfc 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 20-July-2023 + Last updated: 14-August-2023 Instructions: - [optional] close Firefox and backup your profile @@ -241,6 +241,8 @@ 'toolkit.telemetry.unifiedIsOptIn', /* REMOVED */ + /* 116+ */ + 'network.protocol-handler.external.ms-windows-store', /* 103-115 */ 'beacon.enabled', 'browser.startup.blankWindow', From f1831e947bae0940bf8525447345c96ca27924ea Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 26 Aug 2023 06:45:37 +0000 Subject: [PATCH 161/203] media.gmp-widevinecdm.enabled this adds nothing, users can use `media.eme.enabled` if this is their threat model --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 706fbfc..87556da 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 14-August-2023 + Last updated: 26-August-2023 Instructions: - [optional] close Firefox and backup your profile @@ -242,6 +242,7 @@ /* REMOVED */ /* 116+ */ + 'media.gmp-widevinecdm.enabled', 'network.protocol-handler.external.ms-windows-store', /* 103-115 */ 'beacon.enabled', From 576da2e2363d326ebefb962fd1b149b68bc88284 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 26 Aug 2023 07:08:23 +0000 Subject: [PATCH 162/203] Delete smartReferer.png --- wikipiki/smartReferer.png | Bin 37523 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 wikipiki/smartReferer.png diff --git a/wikipiki/smartReferer.png b/wikipiki/smartReferer.png deleted file mode 100644 index c64b93a9c6b9368a9fe7c92087f577fbd1c1914e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37523 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 Mr>mdKI;Vst0E*AI)Bpeg From 61a9f9d37a566d5e03e8e218bbc94f7d7631117b Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 27 Aug 2023 01:49:42 +0000 Subject: [PATCH 163/203] v115.1 (#1703) The .1 refers to arkenfox, and has nothing to do with Firefox's versioning. This will better align ESR115 users' defaults with AF moving forward --- user.js | 81 +++++++++++++++++++++++++-------------------------------- 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/user.js b/user.js index 5ed7c08..ebb40a6 100644 --- a/user.js +++ b/user.js @@ -1,6 +1,6 @@ /****** * name: arkenfox user.js -* date: 26 July 2023 +* date: 27 August 2023 * version: 115 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -18,7 +18,6 @@ * Some site breakage and unintended consequences will happen. Everyone's experience will differ e.g. some user data is erased on exit (section 2800), change this to suit your needs * While not 100% definitive, search for "[SETUP" tags - e.g. third party images/videos not loading on some sites? check 1601 5. Some tag info [SETUP-SECURITY] it's one item, read it [SETUP-WEB] can cause some websites to break @@ -42,13 +41,13 @@ 0300: QUIETER FOX 0400: SAFE BROWSING 0600: BLOCK IMPLICIT OUTBOUND - 0700: DNS / DoH / PROXY / SOCKS / IPv6 + 0700: DNS / DoH / PROXY / SOCKS 0800: LOCATION BAR / SEARCH BAR / SUGGESTIONS / HISTORY / FORMS 0900: PASSWORDS 1000: DISK AVOIDANCE 1200: HTTPS (SSL/TLS / OCSP / CERTS / HPKP) 1400: FONTS - 1600: HEADERS / REFERERS + 1600: REFERERS 1700: CONTAINERS 2000: PLUGINS / MEDIA / WEBRTC 2400: DOM (DOCUMENT OBJECT MODEL) @@ -255,20 +254,8 @@ user_pref("browser.places.speculativeConnect.enabled", false); * [1] https://www.bleepingcomputer.com/news/software/major-browsers-to-prevent-disabling-of-click-tracking-privacy-risk/ ***/ // user_pref("browser.send_pings", false); // [DEFAULT: false] -/*** [SECTION 0700]: DNS / DoH / PROXY / SOCKS / IPv6 ***/ +/*** [SECTION 0700]: DNS / DoH / PROXY / SOCKS ***/ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost!"); -/* 0701: disable IPv6 - * IPv6 can be abused, especially with MAC addresses, and can leak with VPNs: assuming - * your ISP and/or router and/or website is IPv6 capable. Most sites will fall back to IPv4 - * [SETUP-WEB] PR_CONNECT_RESET_ERROR: this pref *might* be the cause - * [STATS] Firefox telemetry (Feb 2023) shows ~9% of successful connections are IPv6 - * [NOTE] This is an application level fallback. Disabling IPv6 is best done at an - * OS/network level, and/or configured properly in VPN setups. If you are not masking your IP, - * then this won't make much difference. If you are masking your IP, then it can only help. - * [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT" - * [TEST] https://ipleak.org/ - * [1] https://www.internetsociety.org/tag/ipv6-security/ (Myths 2,4,5,6) ***/ -user_pref("network.dns.disableIPv6", true); /* 0702: set the proxy server to do any DNS lookups when using SOCKS * e.g. in Tor, this stops your local DNS server from knowing your Tor destination * as a remote Tor node will handle the DNS request @@ -308,13 +295,6 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] /*** [SECTION 0800]: LOCATION BAR / SEARCH BAR / SUGGESTIONS / HISTORY / FORMS ***/ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); -/* 0801: disable location bar using search - * Don't leak URL typos to a search engine, give an error message instead - * Examples: "secretplace,com", "secretplace/com", "secretplace com", "secret place.com" - * [NOTE] This does not affect explicit user action such as using search buttons in the - * dropdown, or using keyword search shortcuts you configure in options (e.g. "d" for DuckDuckGo) - * [SETUP-CHROME] Override this if you trust and use a privacy respecting search engine ***/ -user_pref("keyword.enabled", false); /* 0802: disable location bar domain guessing * domain guessing intercepts DNS "hostname not found errors" and resends a * request (e.g. by adding www or .com). This is inconsistent use (e.g. FQDNs), does not work @@ -527,18 +507,13 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); // user_pref("layout.css.font-visibility.standard", 1); // user_pref("layout.css.font-visibility.trackingprotection", 1); -/*** [SECTION 1600]: HEADERS / REFERERS +/*** [SECTION 1600]: REFERERS full URI: https://example.com:8888/foo/bar.html?id=1234 scheme+host+port+path: https://example.com:8888/foo/bar.html scheme+host+port: https://example.com:8888 [1] https://feeding.cloud.geek.nz/posts/tweaking-referrer-for-privacy-in-firefox/ ***/ user_pref("_user.js.parrot", "1600 syntax error: the parrot rests in peace!"); -/* 1601: control when to send a cross-origin referer - * 0=always (default), 1=only if base domains match, 2=only if hosts match - * [SETUP-WEB] Breakage: older modems/routers and some sites e.g banks, vimeo, icloud, instagram - * If "2" is too strict, then override to "0" and use Smart Referer extension (Strict mode + add exceptions) ***/ -user_pref("network.http.referer.XOriginPolicy", 2); /* 1602: control the amount of cross-origin information to send [FF52+] * 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/ user_pref("network.http.referer.XOriginTrimmingPolicy", 2); @@ -571,17 +546,6 @@ user_pref("media.peerconnection.ice.default_address_only", true); /* 2020: disable GMP (Gecko Media Plugins) * [1] https://wiki.mozilla.org/GeckoMediaPlugins ***/ // user_pref("media.gmp-provider.enabled", false); -/* 2021: disable widevine CDM (Content Decryption Module) - * [NOTE] This is covered by the EME master switch (2022) ***/ - // user_pref("media.gmp-widevinecdm.enabled", false); -/* 2022: disable all DRM content (EME: Encryption Media Extension) - * Optionally hide the setting which also disables the DRM prompt - * [SETUP-WEB] e.g. Netflix, Amazon Prime, Hulu, HBO, Disney+, Showtime, Starz, DirectTV - * [SETTING] General>DRM Content>Play DRM-controlled content - * [TEST] https://bitmovin.com/demos/drm - * [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/ -user_pref("media.eme.enabled", false); - // user_pref("browser.eme.ui.enabled", false); /*** [SECTION 2400]: DOM (DOCUMENT OBJECT MODEL) ***/ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); @@ -631,8 +595,6 @@ user_pref("network.IDN_show_punycode", true); * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pdf.js+firefox ***/ user_pref("pdfjs.disabled", false); // [DEFAULT: false] user_pref("pdfjs.enableScripting", false); // [FF86+] -/* 2621: disable links launching Windows Store on Windows 8/8.1/10 [WINDOWS] ***/ -user_pref("network.protocol-handler.external.ms-windows-store", false); /* 2623: disable permissions delegation [FF73+] * Currently applies to cross-origin geolocation, camera, mic and screen-sharing * permissions, and fullscreen requests. Disabling delegation means any prompts @@ -933,8 +895,8 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow /* 5015: disable Windows taskbar preview [WINDOWS] ***/ // user_pref("browser.taskbar.previews.enable", false); // [DEFAULT: false] /* 5016: discourage downloading to desktop - * 0=desktop, 1=downloads (default), 2=last used - * [SETTING] To set your default "downloads": General>Downloads>Save files to ***/ + * 0=desktop, 1=downloads (default), 2=custom + * [SETTING] To set your custom default "downloads": General>Downloads>Save files to ***/ // user_pref("browser.download.folderList", 2); /* 5017: disable Form Autofill * If .supportedCountries includes your region (browser.search.region) and .supported @@ -949,6 +911,12 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF] /* 5020: disable Windows native notifications and use app notications instead [FF111+] [WINDOWS] ***/ // user_pref("alerts.useSystemBackend.windows.notificationserver.enabled", false); +/* 5021: disable location bar using search + * Don't leak URL typos to a search engine, give an error message instead + * Examples: "secretplace,com", "secretplace/com", "secretplace com", "secret place.com" + * [NOTE] This does not affect explicit user action such as using search buttons in the + * dropdown, or using keyword search shortcuts you configure in options (e.g. "d" for DuckDuckGo) ***/ + // user_pref("keyword.enabled", false); /*** [SECTION 5500]: OPTIONAL HARDENING Not recommended. Overriding these can cause breakage and performance issues, @@ -989,6 +957,25 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); // user_pref("javascript.options.wasm", false); /* 5507: disable rendering of SVG OpenType fonts ***/ // user_pref("gfx.font_rendering.opentype_svg.enabled", false); +/* 5508: disable all DRM content (EME: Encryption Media Extension) + * Optionally hide the UI setting which also disables the DRM prompt + * [SETTING] General>DRM Content>Play DRM-controlled content + * [TEST] https://bitmovin.com/demos/drm + * [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/ + // user_pref("media.eme.enabled", false); + // user_pref("browser.eme.ui.enabled", false); +/* 5509: disable IPv6 if using a VPN + * This is an application level fallback. Disabling IPv6 is best done at an OS/network + * level, and/or configured properly in system wide VPN setups. + * If you see PR_CONNECT_RESET_ERROR, this pref *might* be the cause + * [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT" + * [TEST] https://ipleak.org/ + * [1] https://www.internetsociety.org/tag/ipv6-security/ (Myths 2,4,5,6) ***/ + // user_pref("network.dns.disableIPv6", true); +/* 5510: control when to send a cross-origin referer + * 0=always (default), 1=only if base domains match, 2=only if hosts match + * [NOTE] Will cause breakage: older modems/routers and some sites e.g banks, vimeo, icloud, instagram ***/ + // user_pref("network.http.referer.XOriginPolicy", 2); /*** [SECTION 6000]: DON'T TOUCH ***/ user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!"); @@ -1037,6 +1024,8 @@ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] // user_pref("extensions.formautofill.creditCards.available", ""); // user_pref("extensions.formautofill.creditCards.supported", ""); // user_pref("middlemouse.contentLoadURL", ""); +/* 6051: prefsCleaner: reset previously active items removed from arkenfox FF115+ ***/ + // user_pref("network.protocol-handler.external.ms-windows-store", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); @@ -1082,7 +1071,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 // user_pref("network.http.referer.hideOnionSource", true); // 1305144 /* 7007: referers - * [WHY] Only cross-origin referers (1600s) need control ***/ + * [WHY] Only cross-origin referers (1602, 5510) matter ***/ // user_pref("network.http.sendRefererHeader", 2); // user_pref("network.http.referer.trimmingPolicy", 0); /* 7008: set the default Referrer Policy [FF59+] From ba173d49205ee927ed62e81e606569d98f531d38 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 28 Aug 2023 04:15:07 +0000 Subject: [PATCH 164/203] layout.css.font-visibility.resistFingerprinting --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 87556da..d3d8a98 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 26-August-2023 + Last updated: 28-August-2023 Instructions: - [optional] close Firefox and backup your profile @@ -32,6 +32,8 @@ const aPREFS = [ /* DEPRECATED */ + /* 116+ */ + 'layout.css.font-visibility.resistFingerprinting', // 116 /* 103-115 */ 'browser.cache.offline.enable', // 115 'extensions.formautofill.heuristics.enabled', // 114 From dfd5589c3dae1723b8239ad9c46e114c2f851ed2 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 16 Sep 2023 07:08:33 +0000 Subject: [PATCH 165/203] v117 deprecated --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index d3d8a98..652709e 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 28-August-2023 + Last updated: 16-September-2023 Instructions: - [optional] close Firefox and backup your profile @@ -33,7 +33,9 @@ const aPREFS = [ /* DEPRECATED */ /* 116+ */ + 'dom.webnotifications.serviceworker.enabled', // 117 'layout.css.font-visibility.resistFingerprinting', // 116 + 'security.family_safety.mode', // 117 /* 103-115 */ 'browser.cache.offline.enable', // 115 'extensions.formautofill.heuristics.enabled', // 114 From 1e6e211a061b592a176087fe9f6843249852cad2 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 17 Sep 2023 07:17:40 +0000 Subject: [PATCH 166/203] v117 (#1710) --- user.js | 65 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/user.js b/user.js index ebb40a6..5e54f30 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 27 August 2023 -* version: 115 +* date: 17 September 2023 +* version: 117 * url: https://github.com/arkenfox/user.js * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -33,6 +33,8 @@ - If you are not using arkenfox v102-1... (not a definitive list) - 2815: clearOnShutdown cookies + offlineApps should be false - 9999: switch the appropriate deprecated section(s) back on + * ESR115 + - use https://github.com/arkenfox/user.js/releases/tag/115.1 * INDEX: @@ -283,15 +285,23 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] * [SETUP-CHROME] If you use a proxy and you understand the security impact * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1732792,1733994,1733481 ***/ // user_pref("network.proxy.allow_bypass", false); -/* 0710: disable DNS-over-HTTPS (DoH) rollout [FF60+] - * 0=default, 2=increased (TRR (Trusted Recursive Resolver) first), 3=max (TRR only), 5=off +/* 0710: enable DNS-over-HTTPS (DoH) [FF60+] + * 0=default, 2=increased (TRR (Trusted Recursive Resolver) first), 3=max (TRR only), 5=off (no rollout) * see "doh-rollout.home-region": USA 2019, Canada 2021, Russia/Ukraine 2022 [3] * [SETTING] Privacy & Security>DNS over HTTPS * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/ * [2] https://wiki.mozilla.org/Security/DOH-resolver-policy * [3] https://support.mozilla.org/en-US/kb/firefox-dns-over-https * [4] https://www.eff.org/deeplinks/2020/12/dns-doh-and-odoh-oh-my-year-review-2020 ***/ - // user_pref("network.trr.mode", 5); + // user_pref("network.trr.mode", 3); +/* 0711: disable skipping DoH when parental controls are enabled [FF70+] ***/ +user_pref("network.dns.skipTRR-when-parental-control-enabled", false); +/* 0712: set DoH provider + * The custom uri is the value shown when you "Choose provider>Custom>" + * [NOTE] If you USE custom then "network.trr.uri" should be set the same + * [SETTING] Privacy & Security>DNS over HTTPS>Increased/Max>Choose provider ***/ + // user_pref("network.trr.uri", "https://example.dns"); + // user_pref("network.trr.custom_uri", "https://example.dns"); /*** [SECTION 0800]: LOCATION BAR / SEARCH BAR / SUGGESTIONS / HISTORY / FORMS ***/ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); @@ -443,12 +453,6 @@ user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1] user_pref("security.OCSP.require", true); /** CERTS / HPKP (HTTP Public Key Pinning) ***/ -/* 1221: disable Windows 8.1's Microsoft Family Safety cert [FF50+] [WINDOWS] - * 0=disable detecting Family Safety mode and importing the root - * 1=only attempt to detect Family Safety mode (don't import the root) - * 2=detect Family Safety mode and import the root - * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 ***/ -user_pref("security.family_safety.mode", 0); /* 1223: enable strict PKP (Public Key Pinning) * 0=disabled, 1=allow user MiTM (default; such as your antivirus), 2=strict * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE ***/ @@ -499,7 +503,7 @@ user_pref("browser.xul.error_pages.expert_bad_cert", true); user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); /* 1402: limit font visibility (Windows, Mac, some Linux) [FF94+] * Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed - * In normal windows: uses the first applicable: RFP (4506) over TP over Standard + * In normal windows: uses the first applicable: RFP over TP over Standard * In Private Browsing windows: uses the most restrictive between normal and private * 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts * [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc ***/ @@ -769,7 +773,7 @@ user_pref("privacy.sanitize.timeSpan", 0); ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable privacy.resistFingerprinting - * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a site exception via the urlbar + * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar * RFP also has a few side effects: mainly timezone is UTC0, and websites will prefer light theme * [NOTE] pbmode applies if true and the original pref is false * [1] https://bugzilla.mozilla.org/418986 ***/ @@ -799,8 +803,6 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] * [WARNING] DO NOT USE unless testing, see [1] comment 12 * [1] https://bugzilla.mozilla.org/1635603 ***/ // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); -/* 4506: set RFP's font visibility level (1402) [FF94+] ***/ - // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] @@ -967,7 +969,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); /* 5509: disable IPv6 if using a VPN * This is an application level fallback. Disabling IPv6 is best done at an OS/network * level, and/or configured properly in system wide VPN setups. - * If you see PR_CONNECT_RESET_ERROR, this pref *might* be the cause + * [SETUP-WEB] PR_CONNECT_RESET_ERROR * [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT" * [TEST] https://ipleak.org/ * [1] https://www.internetsociety.org/tag/ipv6-security/ (Myths 2,4,5,6) ***/ @@ -976,6 +978,11 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * 0=always (default), 1=only if base domains match, 2=only if hosts match * [NOTE] Will cause breakage: older modems/routers and some sites e.g banks, vimeo, icloud, instagram ***/ // user_pref("network.http.referer.XOriginPolicy", 2); +/* 5511: set DoH bootstrap address [FF89+] + * Firefox uses the system DNS to initially resolve the IP address of your DoH server. + * When set to a valid, working value that matches your "network.trr.uri" (0712) Firefox + * won't use the system DNS. If the IP doesn't match then DoH won't work ***/ + // user_pref("network.trr.bootstrapAddr", "10.0.0.1") // [HIDDEN PREF] /*** [SECTION 6000]: DON'T TOUCH ***/ user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!"); @@ -1116,11 +1123,10 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7017: disable service workers * [WHY] Already isolated with TCP (2701) behind a pref (2710) ***/ // user_pref("dom.serviceWorkers.enabled", false); -/* 7018: disable Web Notifications +/* 7018: disable Web Notifications [FF22+] * [WHY] Web Notifications are behind a prompt (7002) * [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ ***/ - // user_pref("dom.webnotifications.enabled", false); // [FF22+] - // user_pref("dom.webnotifications.serviceworker.enabled", false); // [FF44+] + // user_pref("dom.webnotifications.enabled", false); /* 7019: disable Push Notifications [FF44+] * [WHY] Push requires subscription * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" @@ -1212,5 +1218,26 @@ user_pref("network.cookie.lifetimePolicy", 2); // user_pref("browser.cache.offline.enable", false); // ***/ +/* ESR115.x still uses all the following prefs +// [NOTE] replace the * with a slash in the line above to re-enable active ones +// FF116 +// 4506: set RFP's font visibility level (1402) [FF94+] + // [-] https://bugzilla.mozilla.org/1838415 + // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] +// FF117 +// 1221: disable Windows Microsoft Family Safety cert [FF50+] [WINDOWS] + // 0=disable detecting Family Safety mode and importing the root + // 1=only attempt to detect Family Safety mode (don't import the root) + // 2=detect Family Safety mode and import the root + // [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 + // [-] https://bugzilla.mozilla.org/1844908 +user_pref("security.family_safety.mode", 0); +// 7018: disable service worker Web Notifications [FF44+] + // [WHY] Web Notifications are behind a prompt (7002) + // [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ + // [-] https://bugzilla.mozilla.org/1842457 + // user_pref("dom.webnotifications.serviceworker.enabled", false); +// ***/ + /* END: internal custom pref to test for syntax errors ***/ user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!"); From 3f6fcc13f0b8dcdcadf75edc55c62bb7148ab876 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Sep 2023 08:31:22 +0000 Subject: [PATCH 167/203] permissions.delegation.enabled --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 652709e..998974c 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 16-September-2023 + Last updated: 18-September-2023 Instructions: - [optional] close Firefox and backup your profile @@ -35,6 +35,7 @@ /* 116+ */ 'dom.webnotifications.serviceworker.enabled', // 117 'layout.css.font-visibility.resistFingerprinting', // 116 + 'permissions.delegation.enabled', // 118 'security.family_safety.mode', // 117 /* 103-115 */ 'browser.cache.offline.enable', // 115 From 50af4b9af4295375207eac05b2b89e05830fbd9f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Sep 2023 08:34:35 +0000 Subject: [PATCH 168/203] remove old prefs --- scratchpad-scripts/arkenfox-cleanup.js | 407 +------------------------ 1 file changed, 1 insertion(+), 406 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 998974c..2878031 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -1,5 +1,5 @@ /*** - This will reset the preferences that have been + This will reset the preferences that since FF91 have been - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past @@ -57,193 +57,6 @@ 'security.csp.enable', // 99 'security.password_lifetime', // 102 'security.ssl3.rsa_des_ede3_sha', // 93 - /* 79-91 */ - 'browser.cache.offline.storage.enable', - 'browser.download.hide_plugins_without_extensions', - 'browser.library.activity-stream.enabled', - 'browser.search.geoSpecificDefaults', - 'browser.search.geoSpecificDefaults.url', - 'dom.ipc.plugins.flash.subprocess.crashreporter.enabled', - 'dom.ipc.plugins.reportCrashURL', - 'dom.w3c_pointer_events.enabled', - 'intl.charset.fallback.override', - 'network.ftp.enabled', - 'plugin.state.flash', - 'security.mixed_content.block_object_subrequest', - 'security.ssl.errorReporting.automatic', - 'security.ssl.errorReporting.enabled', - 'security.ssl.errorReporting.url', - /* 69-78 */ - 'browser.newtabpage.activity-stream.telemetry.ping.endpoint', - 'browser.tabs.remote.allowLinkedWebInFileUriProcess', - 'browser.urlbar.oneOffSearches', - 'devtools.webide.autoinstallADBExtension', - 'devtools.webide.enabled', - 'dom.indexedDB.enabled', - 'extensions.blocklist.url', - 'geo.wifi.logging.enabled', - 'geo.wifi.uri', - 'gfx.downloadable_fonts.woff2.enabled', - 'media.autoplay.allow-muted', - 'media.autoplay.enabled.user-gestures-needed', - 'offline-apps.allow_by_default', - 'plugins.click_to_play', - 'privacy.userContext.longPressBehavior', - 'toolkit.cosmeticAnimations.enabled', - 'toolkit.telemetry.hybridContent.enabled', - 'webgl.disable-extensions', - /* 61-68 */ - 'app.update.enabled', - 'browser.aboutHomeSnippets.updateUrl', - 'browser.chrome.errorReporter.enabled', - 'browser.chrome.errorReporter.submitUrl', - 'browser.chrome.favicons', - 'browser.ctrlTab.previews', - 'browser.fixup.hide_user_pass', - 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr', - 'browser.newtabpage.activity-stream.disableSnippets', - 'browser.onboarding.enabled', - 'browser.search.countryCode', - 'browser.urlbar.autocomplete.enabled', - 'devtools.webide.adbAddonURL', - 'devtools.webide.autoinstallADBHelper', - 'dom.event.highrestimestamp.enabled', - 'experiments.activeExperiment', - 'experiments.enabled', - 'experiments.manifest.uri', - 'experiments.supported', - 'lightweightThemes.update.enabled', - 'media.autoplay.enabled', - 'network.allow-experiments', - 'network.cookie.lifetime.days', - 'network.jar.block-remote-files', - 'network.jar.open-unsafe-types', - 'plugin.state.java', - 'security.csp.enable_violation_events', - 'security.csp.experimentalEnabled', - 'shield.savant.enabled', - /* 60 or earlier */ - 'browser.bookmarks.showRecentlyBookmarked', - 'browser.casting.enabled', - 'browser.crashReports.unsubmittedCheck.autoSubmit', - 'browser.formautofill.enabled', - 'browser.formfill.saveHttpsForms', - 'browser.fullscreen.animate', - 'browser.history.allowPopState', - 'browser.history.allowPushState', - 'browser.history.allowReplaceState', - 'browser.newtabpage.activity-stream.enabled', - 'browser.newtabpage.directory.ping', - 'browser.newtabpage.directory.source', - 'browser.newtabpage.enhanced', - 'browser.newtabpage.introShown', - 'browser.pocket.api', - 'browser.pocket.enabled', - 'browser.pocket.oAuthConsumerKey', - 'browser.pocket.site', - 'browser.polaris.enabled', - 'browser.safebrowsing.appRepURL', - 'browser.safebrowsing.enabled', - 'browser.safebrowsing.gethashURL', - 'browser.safebrowsing.malware.reportURL', - 'browser.safebrowsing.provider.google.appRepURL', - 'browser.safebrowsing.reportErrorURL', - 'browser.safebrowsing.reportGenericURL', - 'browser.safebrowsing.reportMalwareErrorURL', - 'browser.safebrowsing.reportMalwareMistakeURL', - 'browser.safebrowsing.reportMalwareURL', - 'browser.safebrowsing.reportPhishMistakeURL', - 'browser.safebrowsing.reportURL', - 'browser.safebrowsing.updateURL', - 'browser.search.showOneOffButtons', - 'browser.selfsupport.enabled', - 'browser.selfsupport.url', - 'browser.sessionstore.privacy_level_deferred', - 'browser.tabs.animate', - 'browser.trackingprotection.gethashURL', - 'browser.trackingprotection.updateURL', - 'browser.urlbar.unifiedcomplete', - 'browser.usedOnWindows10.introURL', - 'camera.control.autofocus_moving_callback.enabled', - 'camera.control.face_detection.enabled', - 'datareporting.healthreport.about.reportUrl', - 'datareporting.healthreport.about.reportUrlUnified', - 'datareporting.healthreport.documentServerURI', - 'datareporting.healthreport.service.enabled', - 'datareporting.policy.dataSubmissionEnabled.v2', - 'devtools.webide.autoinstallFxdtAdapters', - 'dom.archivereader.enabled', - 'dom.beforeAfterKeyboardEvent.enabled', - 'dom.disable_image_src_set', - 'dom.disable_window_open_feature.scrollbars', - 'dom.disable_window_status_change', - 'dom.enable_user_timing', - 'dom.flyweb.enabled', - 'dom.idle-observers-api.enabled', - 'dom.keyboardevent.code.enabled', - 'dom.network.enabled', - 'dom.push.udp.wakeupEnabled', - 'dom.telephony.enabled', - 'dom.vr.oculus050.enabled', - 'dom.workers.enabled', - 'dom.workers.sharedWorkers.enabled', - 'extensions.formautofill.experimental', - 'extensions.screenshots.system-disabled', - 'extensions.shield-recipe-client.api_url', - 'extensions.shield-recipe-client.enabled', - 'full-screen-api.approval-required', - 'general.useragent.locale', - 'geo.security.allowinsecure', - 'intl.locale.matchOS', - 'loop.enabled', - 'loop.facebook.appId', - 'loop.facebook.enabled', - 'loop.facebook.fallbackUrl', - 'loop.facebook.shareUrl', - 'loop.feedback.formURL', - 'loop.feedback.manualFormURL', - 'loop.logDomains', - 'loop.server', - 'media.block-play-until-visible', - 'media.eme.apiVisible', - 'media.eme.chromium-api.enabled', - 'media.getusermedia.screensharing.allow_on_old_platforms', - 'media.getusermedia.screensharing.allowed_domains', - 'media.gmp-eme-adobe.autoupdate', - 'media.gmp-eme-adobe.enabled', - 'media.gmp-eme-adobe.visible', - 'network.http.referer.userControlPolicy', - 'network.http.sendSecureXSiteReferrer', - 'network.http.spdy.enabled.http2draft', - 'network.http.spdy.enabled.v3-1', - 'network.websocket.enabled', - 'pageThumbs.enabled', - 'pfs.datasource.url', - 'plugin.scan.Acrobat', - 'plugin.scan.Quicktime', - 'plugin.scan.WindowsMediaPlayer', - 'plugins.enumerable_names', - 'plugins.update.notifyUser', - 'plugins.update.url', - 'privacy.clearOnShutdown.passwords', - 'privacy.donottrackheader.value', - 'security.mixed_content.send_hsts_priming', - 'security.mixed_content.use_hsts', - 'security.ssl3.ecdhe_ecdsa_rc4_128_sha', - 'security.ssl3.ecdhe_rsa_rc4_128_sha', - 'security.ssl3.rsa_rc4_128_md5', - 'security.ssl3.rsa_rc4_128_sha', - 'security.tls.insecure_fallback_hosts.use_static_list', - 'security.tls.unrestricted_rc4_fallback', - 'security.xpconnect.plugin.unrestricted', - 'social.directories', - 'social.enabled', - 'social.remote-install.enabled', - 'social.share.activationPanelEnabled', - 'social.shareDirectory', - 'social.toast-notifications.enabled', - 'social.whitelist', - 'toolkit.telemetry.unifiedIsOptIn', /* REMOVED */ /* 116+ */ @@ -284,224 +97,6 @@ 'privacy.firstparty.isolate.use_site', 'privacy.window.name.update.enabled', 'security.insecure_connection_text.enabled', - /* 79-91 */ - 'alerts.showFavicons', - 'browser.newtabpage.activity-stream.asrouter.providers.snippets', - 'browser.send_pings.require_same_host', - 'browser.urlbar.usepreloadedtopurls.enabled', - 'dom.allow_cut_copy', - 'dom.battery.enabled', - 'dom.IntersectionObserver.enabled', - 'dom.storage.enabled', - 'dom.vibrator.enabled', - 'extensions.screenshots.upload-disabled', - 'general.warnOnAboutConfig', - 'gfx.direct2d.disabled', - 'layers.acceleration.disabled', - 'media.getusermedia.audiocapture.enabled', - 'media.getusermedia.browser.enabled', - 'media.getusermedia.screensharing.enabled', - 'media.gmp-widevinecdm.visible', - 'media.media-capabilities.enabled', - 'network.http.redirection-limit', - 'privacy.partition.network_state', - 'security.insecure_connection_icon.enabled', - 'security.mixed_content.block_active_content', - 'security.ssl.enable_ocsp_stapling', - 'security.ssl3.dhe_rsa_aes_128_sha', - 'security.ssl3.dhe_rsa_aes_256_sha', - 'webgl.min_capability_mode', - /* 69-78 */ - 'browser.cache.disk_cache_ssl', - 'browser.search.geoip.url', - 'browser.search.region', - 'browser.sessionhistory.max_entries', - 'dom.push.connection.enabled', - 'dom.push.serverURL', - 'extensions.getAddons.discovery.api_url', - 'extensions.htmlaboutaddons.discover.enabled', - 'extensions.webservice.discoverURL', - 'intl.locale.requested', - 'intl.regional_prefs.use_os_locales', - 'media.block-autoplay-until-in-foreground', - 'middlemouse.paste', - 'plugin.sessionPermissionNow.intervalInMinutes', - 'privacy.usercontext.about_newtab_segregation.enabled', - 'security.insecure_connection_icon.pbmode.enabled', - 'security.insecure_connection_text.pbmode.enabled', - 'webgl.dxgl.enabled', - /* 61-68 */ - 'app.update.service.enabled', - 'app.update.silent', - 'app.update.staging.enabled', - 'browser.cache.disk.capacity', - 'browser.cache.disk.smart_size.enabled', - 'browser.cache.disk.smart_size.first_run', - 'browser.cache.offline.insecure.enable', - 'browser.contentblocking.enabled', - 'browser.laterrun.enabled', - 'browser.offline-apps.notify', - 'browser.rights.3.shown', - 'browser.safebrowsing.blockedURIs.enabled', - 'browser.safebrowsing.downloads.remote.block_dangerous', - 'browser.safebrowsing.downloads.remote.block_dangerous_host', - 'browser.safebrowsing.provider.google.gethashURL', - 'browser.safebrowsing.provider.google.reportMalwareMistakeURL', - 'browser.safebrowsing.provider.google.reportPhishMistakeURL', - 'browser.safebrowsing.provider.google.reportURL', - 'browser.safebrowsing.provider.google.updateURL', - 'browser.safebrowsing.provider.google4.dataSharing.enabled', - 'browser.safebrowsing.provider.google4.dataSharingURL', - 'browser.safebrowsing.provider.google4.gethashURL', - 'browser.safebrowsing.provider.google4.reportMalwareMistakeURL', - 'browser.safebrowsing.provider.google4.reportPhishMistakeURL', - 'browser.safebrowsing.provider.google4.reportURL', - 'browser.safebrowsing.provider.google4.updateURL', - 'browser.safebrowsing.provider.mozilla.gethashURL', - 'browser.safebrowsing.provider.mozilla.updateURL', - 'browser.safebrowsing.reportPhishURL', - 'browser.sessionhistory.max_total_viewers', - 'browser.sessionstore.max_windows_undo', - 'browser.slowStartup.maxSamples', - 'browser.slowStartup.notificationDisabled', - 'browser.slowStartup.samples', - 'browser.storageManager.enabled', - 'browser.urlbar.autoFill.typed', - 'browser.urlbar.filter.javascript', - 'browser.urlbar.maxHistoricalSearchSuggestions', - 'browser.urlbar.userMadeSearchSuggestionsChoice', - 'canvas.capturestream.enabled', - 'dom.allow_scripts_to_close_windows', - 'dom.disable_window_flip', - 'dom.forms.datetime', - 'dom.imagecapture.enabled', - 'dom.popup_maximum', - 'extensions.webextensions.keepStorageOnUninstall', - 'extensions.webextensions.keepUuidOnUninstall', - 'font.blacklist.underline_offset', - 'font.name.monospace.x-unicode', - 'font.name.monospace.x-western', - 'font.name.sans-serif.x-unicode', - 'font.name.sans-serif.x-western', - 'font.name.serif.x-unicode', - 'font.name.serif.x-western', - 'gfx.offscreencanvas.enabled', - 'javascript.options.shared_memory', - 'layout.css.font-loading-api.enabled', - 'media.gmp-gmpopenh264.autoupdate', - 'media.gmp-gmpopenh264.enabled', - 'media.gmp-manager.updateEnabled', - 'media.gmp-manager.url', - 'media.gmp-manager.url.override', - 'media.gmp-widevinecdm.autoupdate', - 'media.gmp.trial-create.enabled', - 'media.navigator.video.enabled', - 'media.peerconnection.ice.tcp', - 'media.peerconnection.identity.enabled', - 'media.peerconnection.identity.timeout', - 'media.peerconnection.turn.disable', - 'media.peerconnection.use_document_iceservers', - 'media.peerconnection.video.enabled', - 'network.auth.subresource-img-cross-origin-http-auth-allow', - 'network.cookie.leave-secure-alone', - 'network.cookie.same-site.enabled', - 'network.dnsCacheEntries', - 'network.dnsCacheExpiration', - 'network.http.fast-fallback-to-IPv4', - 'network.proxy.autoconfig_url.include_path', - 'offline-apps.quota.warn', - 'pdfjs.enableWebGL', - 'plugin.default.state', - 'plugin.defaultXpi.state', - 'plugin.scan.plid.all', - 'privacy.trackingprotection.annotate_channels', - 'privacy.trackingprotection.lower_network_priority', - 'privacy.trackingprotection.pbmode.enabled', - 'privacy.trackingprotection.ui.enabled', - 'security.data_uri.block_toplevel_data_uri_navigations', - 'security.insecure_field_warning.contextual.enabled', - 'security.insecure_password.ui.enabled', - 'security.tls.version.fallback-limit', - 'services.blocklist.addons.collection', - 'services.blocklist.gfx.collection', - 'services.blocklist.onecrl.collection', - 'services.blocklist.plugins.collection', - 'services.blocklist.signing.enforced', - 'services.blocklist.update_enabled', - 'signon.autofillForms.http', - 'signon.storeWhenAutocompleteOff', - 'toolkit.telemetry.cachedClientID', - 'urlclassifier.trackingTable', - 'xpinstall.whitelist.required', - /* 60 or lower */ - 'browser.migrate.automigrate.enabled', - 'browser.search.geoip.timeout', - 'browser.search.reset.enabled', - 'browser.search.reset.whitelist', - 'browser.stopReloadAnimation.enabled', - 'browser.tabs.insertRelatedAfterCurrent', - 'browser.tabs.loadDivertedInBackground', - 'browser.tabs.loadInBackground', - 'browser.tabs.selectOwnerOnClose', - 'browser.urlbar.clickSelectsAll', - 'browser.urlbar.doubleClickSelectsAll', - 'device.storage.enabled', - 'dom.keyboardevent.dispatch_during_composition', - 'dom.presentation.controller.enabled', - 'dom.presentation.discoverable', - 'dom.presentation.discovery.enabled', - 'dom.presentation.enabled', - 'dom.presentation.receiver.enabled', - 'dom.presentation.session_transport.data_channel.enable', - 'dom.vr.oculus.enabled', - 'dom.vr.openvr.enabled', - 'dom.vr.osvr.enabled', - 'extensions.pocket.api', - 'extensions.pocket.oAuthConsumerKey', - 'extensions.pocket.site', - 'general.useragent.compatMode.firefox', - 'geo.wifi.xhr.timeout', - 'gfx.layerscope.enabled', - 'media.flac.enabled', - 'media.mediasource.enabled', - 'media.mediasource.mp4.enabled', - 'media.mediasource.webm.audio.enabled', - 'media.mediasource.webm.enabled', - 'media.mp4.enabled', - 'media.ogg.enabled', - 'media.ogg.flac.enabled', - 'media.opus.enabled', - 'media.raw.enabled', - 'media.wave.enabled', - 'media.webm.enabled', - 'media.webspeech.recognition.enable', - 'media.wmf.amd.vp9.enabled', - 'media.wmf.enabled', - 'media.wmf.vp9.enabled', - 'network.dns.blockDotOnion', - 'network.stricttransportsecurity.preloadlist', - 'security.block_script_with_wrong_mime', - 'security.fileuri.strict_origin_policy', - 'security.sri.enable', - 'services.sync.enabled', - 'ui.submenuDelay', - 'webextensions.storage.sync.enabled', - 'webextensions.storage.sync.serverURL', - // excluding these e10 settings - // 'browser.tabs.remote.autostart', - // 'browser.tabs.remote.autostart.2', - // 'browser.tabs.remote.force-enable', - // 'browser.tabs.remote.separateFileUriProcess', - // 'extensions.e10sBlocksEnabling', - // 'extensions.webextensions.remote', - // 'dom.ipc.processCount', - // 'dom.ipc.shims.enabledWarnings', - // 'dom.ipc.processCount.extension', - // 'dom.ipc.processCount.file', - // 'security.sandbox.content.level', - // 'dom.ipc.plugins.sandbox-level.default', - // 'dom.ipc.plugins.sandbox-level.flash', - // 'security.sandbox.logging.enabled', /* IMPORTANT: last active pref must not have a trailing comma */ /* reset parrot: check your open about:config after running the script */ From 336300a274a7721616d7e8109facca984b05f727 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Sep 2023 08:39:50 +0000 Subject: [PATCH 169/203] v118 removed these are all at default now as of at least ESR115 --- scratchpad-scripts/arkenfox-cleanup.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 2878031..e06b998 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -32,7 +32,7 @@ const aPREFS = [ /* DEPRECATED */ - /* 116+ */ + /* 116-128 */ 'dom.webnotifications.serviceworker.enabled', // 117 'layout.css.font-visibility.resistFingerprinting', // 116 'permissions.delegation.enabled', // 118 @@ -59,9 +59,14 @@ 'security.ssl3.rsa_des_ede3_sha', // 93 /* REMOVED */ - /* 116+ */ + /* 116-128 */ + 'browser.fixup.alternate.enabled', + 'browser.urlbar.dnsResolveSingleWordsAfterSearch', 'media.gmp-widevinecdm.enabled', 'network.protocol-handler.external.ms-windows-store', + 'privacy.partition.always_partition_third_party_non_cookie_storage', + 'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage', + 'privacy.partition.serviceWorkers', /* 103-115 */ 'beacon.enabled', 'browser.startup.blankWindow', From f0513b7e64160c80f6e2430a5f3155ee855abdcf Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Sep 2023 11:41:47 +0000 Subject: [PATCH 170/203] inactive prefs no longer needed encryption prefs false since FF109, taskbar since jesus or whatever --- scratchpad-scripts/arkenfox-cleanup.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index e06b998..fea7a68 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -61,12 +61,15 @@ /* REMOVED */ /* 116-128 */ 'browser.fixup.alternate.enabled', + 'browser.taskbar.previews.enable', 'browser.urlbar.dnsResolveSingleWordsAfterSearch', 'media.gmp-widevinecdm.enabled', 'network.protocol-handler.external.ms-windows-store', 'privacy.partition.always_partition_third_party_non_cookie_storage', 'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage', 'privacy.partition.serviceWorkers', + 'security.ssl3.ecdhe_ecdsa_aes_128_sha', + 'security.ssl3.ecdhe_ecdsa_aes_256_sha', /* 103-115 */ 'beacon.enabled', 'browser.startup.blankWindow', From bd2e5b8d1d477951d929ea7d79ceb7a13fc322a4 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 18 Sep 2023 11:47:49 +0000 Subject: [PATCH 171/203] undo encryption they're not default false since 108, that was nightly only --- scratchpad-scripts/arkenfox-cleanup.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index fea7a68..d8ddf31 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -68,8 +68,6 @@ 'privacy.partition.always_partition_third_party_non_cookie_storage', 'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage', 'privacy.partition.serviceWorkers', - 'security.ssl3.ecdhe_ecdsa_aes_128_sha', - 'security.ssl3.ecdhe_ecdsa_aes_256_sha', /* 103-115 */ 'beacon.enabled', 'browser.startup.blankWindow', From 56f51203bf4fea8aa778b792269205d275a62665 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 21 Sep 2023 12:36:35 +0000 Subject: [PATCH 172/203] point to archived version --- scratchpad-scripts/arkenfox-cleanup.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index d8ddf31..e2487fc 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,10 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - Last updated: 18-September-2023 + There is an archived version at https://github.com/arkenfox/user.js/issues/1080 + if you want the full list prior to FF118 + + Last updated: 22-September-2023 Instructions: - [optional] close Firefox and backup your profile From 6e79d1bba6a932480a938bec5c2cee0388e586b9 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 29 Sep 2023 10:52:55 +0000 Subject: [PATCH 173/203] deprecated v118 --- scratchpad-scripts/arkenfox-cleanup.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index e2487fc..6f783a4 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/1080 if you want the full list prior to FF118 - Last updated: 22-September-2023 + Last updated: 29-September-2023 Instructions: - [optional] close Firefox and backup your profile @@ -37,7 +37,10 @@ /* DEPRECATED */ /* 116-128 */ 'dom.webnotifications.serviceworker.enabled', // 117 + 'layout.css.font-visibility.private', // 118 'layout.css.font-visibility.resistFingerprinting', // 116 + 'layout.css.font-visibility.standard', // 118 + 'layout.css.font-visibility.trackingprotection', // 118 'permissions.delegation.enabled', // 118 'security.family_safety.mode', // 117 /* 103-115 */ From f54d632da585a08185c6164017d79315c331181f Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Sat, 7 Oct 2023 10:33:49 +0000 Subject: [PATCH 174/203] v2.0 - improve root check --- prefsCleaner.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index f36732c..6586609 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,23 +2,12 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 1.9 +## version: 2.0 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_prefsCleaner() ) -# Check if running as root and if any files have the owner/group as root/wheel. -if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then - printf "You shouldn't run this with elevated privileges (such as with doas/sudo).\n" - exit 1 -elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then - printf 'It looks like this script was previously run with elevated privileges, -you will need to change ownership of the following files to your user:\n' - find . -user 0 -o -group 0 - exit 1 -fi - readonly CURRDIR=$(pwd) ## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed) @@ -143,13 +132,23 @@ done ## change directory to the Firefox profile directory cd "$(dirname "${SCRIPT_FILE}")" +# Check if running as root and if any files have the owner/group as root/wheel. +if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then + fQuit 1 "You shouldn't run this with elevated privileges (such as with doas/sudo)." +elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then + printf 'It looks like this script was previously run with elevated privileges, +you will need to change ownership of the following files to your user:\n' + find . -user 0 -o -group 0 + fQuit 1 +fi + [ "$AUTOUPDATE" = true ] && update_prefsCleaner "$@" echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v1.9 ║" +echo " ║ v2.0 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." From 3fdcb28b8f1992b66e43582810488413b39ebdb3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 18 Oct 2023 14:03:40 +0000 Subject: [PATCH 175/203] v118 (#1724) --- user.js | 212 ++++++++++++++++++++++++-------------------------------- 1 file changed, 92 insertions(+), 120 deletions(-) diff --git a/user.js b/user.js index 5e54f30..4798b8a 100644 --- a/user.js +++ b/user.js @@ -1,8 +1,9 @@ /****** * name: arkenfox user.js -* date: 17 September 2023 -* version: 117 -* url: https://github.com/arkenfox/user.js +* date: 18 October 2023 +* version: 118 +* urls: https://github.com/arkenfox/user.js [repo] +* : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt * README: @@ -26,15 +27,15 @@ * RELEASES: https://github.com/arkenfox/user.js/releases - * It is best to use the arkenfox release that is optimized for and matches your Firefox version - * EVERYONE: each release - - run prefsCleaner to reset prefs made inactive, including deprecated (9999s) - ESR102 - - If you are not using arkenfox v102-1... (not a definitive list) - - 2815: clearOnShutdown cookies + offlineApps should be false - - 9999: switch the appropriate deprecated section(s) back on - * ESR115 - - use https://github.com/arkenfox/user.js/releases/tag/115.1 + * Use the arkenfox release that matches your Firefox version + - DON'T wait for arkenfox to update Firefox, nothing major changes these days + * Each release + - run prefsCleaner to reset prefs made inactive, including deprecated (9999) + * ESR + - It is recommended to not use the updater, or you will get a later version which may cause issues. + So you should manually append your overrides (and keep a copy), and manually update when you + change ESR releases (arkenfox is already past that release) + - If you decide to keep updating, then the onus is on - also see section 9999 * INDEX: @@ -48,7 +49,6 @@ 0900: PASSWORDS 1000: DISK AVOIDANCE 1200: HTTPS (SSL/TLS / OCSP / CERTS / HPKP) - 1400: FONTS 1600: REFERERS 1700: CONTAINERS 2000: PLUGINS / MEDIA / WEBRTC @@ -56,14 +56,14 @@ 2600: MISCELLANEOUS 2700: ETP (ENHANCED TRACKING PROTECTION) 2800: SHUTDOWN & SANITIZING - 4500: RFP (RESIST FINGERPRINTING) + 4500: RFP (resistFingerprinting) 5000: OPTIONAL OPSEC 5500: OPTIONAL HARDENING 6000: DON'T TOUCH 7000: DON'T BOTHER 8000: DON'T BOTHER: FINGERPRINTING 9000: NON-PROJECT RELATED - 9999: DEPRECATED / REMOVED / LEGACY / RENAMED + 9999: DEPRECATED / RENAMED ******/ @@ -132,6 +132,9 @@ user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to make personalized extension recommendations * [1] https://support.mozilla.org/kb/personalized-extension-recommendations ***/ user_pref("browser.discovery.enabled", false); +/* 0323: disable shopping experience [FF116+] + * [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0 ***/ +user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false] /** TELEMETRY ***/ /* 0330: disable new data submission [FF41+] @@ -269,11 +272,11 @@ user_pref("network.proxy.socks_remote_dns", true); user_pref("network.file.disable_unc_paths", true); // [HIDDEN PREF] /* 0704: disable GIO as a potential proxy bypass vector * Gvfs/GIO has a set of supported protocols like obex, network, archive, computer, - * dav, cdda, gphoto2, trash, etc. By default only sftp is accepted (FF87+) + * dav, cdda, gphoto2, trash, etc. From FF87-117, by default only sftp was accepted * [1] https://bugzilla.mozilla.org/1433507 * [2] https://en.wikipedia.org/wiki/GVfs * [3] https://en.wikipedia.org/wiki/GIO_(software) ***/ -user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] +user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: "" FF118+] /* 0705: disable proxy direct failover for system requests [FF91+] * [WARNING] Default true is a security feature against malicious extensions [1] * [SETUP-CHROME] If you use a proxy and you trust your extensions @@ -305,36 +308,30 @@ user_pref("network.dns.skipTRR-when-parental-control-enabled", false); /*** [SECTION 0800]: LOCATION BAR / SEARCH BAR / SUGGESTIONS / HISTORY / FORMS ***/ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); -/* 0802: disable location bar domain guessing - * domain guessing intercepts DNS "hostname not found errors" and resends a - * request (e.g. by adding www or .com). This is inconsistent use (e.g. FQDNs), does not work - * via Proxy Servers (different error), is a flawed use of DNS (TLDs: why treat .com - * as the 411 for DNS errors?), privacy issues (why connect to sites you didn't - * intend to), can leak sensitive data (e.g. query strings: e.g. Princeton attack), - * and is a security risk (e.g. common typos & malicious sites set up to exploit this) ***/ -user_pref("browser.fixup.alternate.enabled", false); // [DEFAULT: false FF104+] -/* 0804: disable live search suggestions +/* 0801: disable location bar making speculative connections [FF56+] + * [1] https://bugzilla.mozilla.org/1348275 ***/ +user_pref("browser.urlbar.speculativeConnect.enabled", false); +/* 0802: disable location bar contextual suggestions [FF92+] + * [SETTING] Privacy & Security>Address Bar>Suggestions from... + * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ +user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] +user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); +/* 0803: disable live search suggestions * [NOTE] Both must be true for the location bar to work * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine * [SETTING] Search>Provide search suggestions | Show search suggestions in address bar results ***/ user_pref("browser.search.suggest.enabled", false); user_pref("browser.urlbar.suggest.searches", false); -/* 0805: disable location bar making speculative connections [FF56+] - * [1] https://bugzilla.mozilla.org/1348275 ***/ -user_pref("browser.urlbar.speculativeConnect.enabled", false); -/* 0806: disable location bar leaking single words to a DNS provider **after searching** [FF78+] - * 0=never resolve, 1=use heuristics, 2=always resolve - * [1] https://bugzilla.mozilla.org/1642623 ***/ -user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0); // [DEFAULT: 0 FF104+] -/* 0807: disable location bar contextual suggestions [FF92+] - * [SETTING] Privacy & Security>Address Bar>Suggestions from... - * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ -user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] -user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); -/* 0808: disable tab-to-search [FF85+] - * Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search - * [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines ***/ - // user_pref("browser.urlbar.suggest.engines", false); +/* 0805: disable urlbar trending search suggestions [FF118+] + * [SETTING] Search>Search Suggestions>Show trending search suggestions (FF119) ***/ +user_pref("browser.urlbar.trending.featureGate", false); +/* 0806: disable urlbar suggestions ***/ +user_pref("browser.urlbar.addons.featureGate", false); // [FF115+] +user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF] +user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false] +user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] +/* 0807: disable urlbar clipboard suggestions [FF118+] ***/ + // user_pref("browser.urlbar.clipboard.featureGate", false); // [DEFAULT: false] /* 0810: disable search and form history * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [NOTE] We also clear formdata on exit (2811) @@ -342,6 +339,10 @@ user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html * [2] https://bugzilla.mozilla.org/381681 ***/ user_pref("browser.formfill.enable", false); +/* 0815: disable tab-to-search [FF85+] + * Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search + * [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines ***/ + // user_pref("browser.urlbar.suggest.engines", false); /* 0820: disable coloring of visited links * [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive * redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing @@ -499,18 +500,6 @@ user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); * [TEST] https://expired.badssl.com/ ***/ user_pref("browser.xul.error_pages.expert_bad_cert", true); -/*** [SECTION 1400]: FONTS ***/ -user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); -/* 1402: limit font visibility (Windows, Mac, some Linux) [FF94+] - * Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed - * In normal windows: uses the first applicable: RFP over TP over Standard - * In Private Browsing windows: uses the most restrictive between normal and private - * 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts - * [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc ***/ - // user_pref("layout.css.font-visibility.private", 1); - // user_pref("layout.css.font-visibility.standard", 1); - // user_pref("layout.css.font-visibility.trackingprotection", 1); - /*** [SECTION 1600]: REFERERS full URI: https://example.com:8888/foo/bar.html?id=1234 scheme+host+port+path: https://example.com:8888/foo/bar.html @@ -558,11 +547,9 @@ user_pref("dom.disable_window_move_resize", true); /*** [SECTION 2600]: MISCELLANEOUS ***/ user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); -/* 2601: prevent accessibility services from accessing your browser [RESTART] - * [1] https://support.mozilla.org/kb/accessibility-services ***/ -user_pref("accessibility.force_disabled", 1); -/* 2603: remove temp files opened with an external application - * [1] https://bugzilla.mozilla.org/302433 ***/ +/* 2603: remove temp files opened from non-PB windows with an external application + * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=302433,1738574 ***/ +user_pref("browser.download.start_downloads_in_tmp_dir", true); // [FF102+] user_pref("browser.helperApps.deleteTempFileOnExit", true); /* 2606: disable UITour backend so there is no chance that a remote page can use it ***/ user_pref("browser.uitour.enabled", false); @@ -599,12 +586,6 @@ user_pref("network.IDN_show_punycode", true); * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pdf.js+firefox ***/ user_pref("pdfjs.disabled", false); // [DEFAULT: false] user_pref("pdfjs.enableScripting", false); // [FF86+] -/* 2623: disable permissions delegation [FF73+] - * Currently applies to cross-origin geolocation, camera, mic and screen-sharing - * permissions, and fullscreen requests. Disabling delegation means any prompts - * for these will show/use their correct 3rd party origin - * [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion ***/ -user_pref("permissions.delegation.enabled", false); /* 2624: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] */ user_pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: false NON-LINUX] @@ -625,8 +606,7 @@ user_pref("browser.download.always_ask_before_handling_new_types", true); /* 2660: lock down allowed extension directories * [SETUP-CHROME] This will break extensions, language packs, themes and any other * XPI files which are installed outside of profile and application directories - * [1] https://mike.kaply.com/2012/02/21/understanding-add-on-scopes/ - * [1] https://archive.is/DYjAM (archived) ***/ + * [1] https://archive.is/DYjAM ***/ user_pref("extensions.enabledScopes", 5); // [HIDDEN PREF] user_pref("extensions.autoDisableScopes", 15); // [DEFAULT: 15] /* 2661: disable bypassing 3rd party extension install prompts [FF82+] @@ -653,11 +633,6 @@ user_pref("browser.contentblocking.category", "strict"); * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ // user_pref("privacy.antitracking.enableWebcompat", false); -/* 2710: enable state partitioning of service workers [FF96+] ***/ -user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] -/* 2720: enable APS (Always Partitioning Storage) ***/ -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [FF104+] [DEFAULT: true FF109+] -user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [FF105+] [DEFAULT: false FF109+] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); @@ -716,7 +691,7 @@ user_pref("privacy.cpd.cookies", false); * which will display a blank value, and are not guaranteed to work ***/ user_pref("privacy.sanitize.timeSpan", 0); -/*** [SECTION 4500]: RFP (RESIST FINGERPRINTING) +/*** [SECTION 4500]: RFP (resistFingerprinting) RFP covers a wide range of ongoing fingerprinting solutions. It is an all-or-nothing buy in: you cannot pick and choose what parts you want [TEST] https://arkenfox.github.io/TZP/tzp.html @@ -730,7 +705,7 @@ user_pref("privacy.sanitize.timeSpan", 0); FF56 1369303 - spoof/disable performance API 1333651 - spoof User Agent & Navigator API - version: android version spoofed as ESR + version: android version spoofed as ESR (FF119 or lower) OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android 1369319 - disable device sensor API 1369357 - disable site specific zoom @@ -772,7 +747,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 1794628 - return "none" with inverted-colors (FF114) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); -/* 4501: enable privacy.resistFingerprinting +/* 4501: enable RFP * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar * RFP also has a few side effects: mainly timezone is UTC0, and websites will prefer light theme * [NOTE] pbmode applies if true and the original pref is false @@ -787,7 +762,7 @@ user_pref("privacy.window.maxInnerHeight", 900); /* 4503: disable mozAddonManager Web API [FF57+] * [NOTE] To allow extensions to work on AMO, you also need 2662 * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ -user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF FF57-108] +user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); /* 4504: enable RFP letterboxing [FF67+] * Dynamically resizes the inner window by applying margins in stepped ranges [2] * If you use the dimension pref, then it will only apply those resolutions. @@ -894,8 +869,6 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow // user_pref("browser.taskbar.lists.frequent.enabled", false); // user_pref("browser.taskbar.lists.recent.enabled", false); // user_pref("browser.taskbar.lists.tasks.enabled", false); -/* 5015: disable Windows taskbar preview [WINDOWS] ***/ - // user_pref("browser.taskbar.previews.enable", false); // [DEFAULT: false] /* 5016: discourage downloading to desktop * 0=desktop, 1=downloads (default), 2=custom * [SETTING] To set your custom default "downloads": General>Downloads>Save files to ***/ @@ -952,7 +925,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * Vulnerabilities [1] have increasingly been found, including those known and fixed * in native programs years ago [2]. WASM has powerful low-level access, making * certain attacks (brute-force) and vulnerabilities more possible - * [STATS] ~0.2% of websites, about half of which are for crytopmining / malvertising [2][3] + * [STATS] ~0.2% of websites, about half of which are for cryptomining / malvertising [2][3] * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=wasm * [2] https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly * [3] https://www.zdnet.com/article/half-of-the-websites-using-webassembly-use-it-for-malicious-purposes ***/ @@ -982,7 +955,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * Firefox uses the system DNS to initially resolve the IP address of your DoH server. * When set to a valid, working value that matches your "network.trr.uri" (0712) Firefox * won't use the system DNS. If the IP doesn't match then DoH won't work ***/ - // user_pref("network.trr.bootstrapAddr", "10.0.0.1") // [HIDDEN PREF] + // user_pref("network.trr.bootstrapAddr", "10.0.0.1"); // [HIDDEN PREF] /*** [SECTION 6000]: DON'T TOUCH ***/ user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!"); @@ -1014,7 +987,7 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /* 6012: enforce Quarantined Domains [FF115+] * [WHY] https://support.mozilla.org/kb/quarantined-domains */ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] -/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF102+ ***/ +/* 6050: prefsCleaner: previously active items removed from arkenfox 102-114 ***/ // user_pref("beacon.enabled", ""); // user_pref("browser.startup.blankWindow", ""); // user_pref("browser.newtab.preload", ""); @@ -1031,8 +1004,21 @@ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] // user_pref("extensions.formautofill.creditCards.available", ""); // user_pref("extensions.formautofill.creditCards.supported", ""); // user_pref("middlemouse.contentLoadURL", ""); -/* 6051: prefsCleaner: reset previously active items removed from arkenfox FF115+ ***/ +/* 6051: prefsCleaner: previously active items removed from arkenfox 115-127 ***/ + // user_pref("accessibility.force_disabled", ""); + // user_pref("browser.fixup.alternate.enabled", ""); + // user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", ""); // user_pref("network.protocol-handler.external.ms-windows-store", ""); + // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", ""); + // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", ""); + // user_pref("privacy.partition.serviceWorkers", ""); +/* 6052: prefsCleaner: deprecated ESR102 items from FF103-115 ***/ + // user_pref("browser.cache.offline.enable", ""); + // user_pref("extensions.formautofill.heuristics.enabled", ""); + // user_pref("network.cookie.lifetimePolicy", ""); + // user_pref("privacy.clearsitedata.cache.enabled", ""); + // user_pref("privacy.resistFingerprinting.testGranularityMask", ""); + // user_pref("security.pki.sha1_enforcement_level", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); @@ -1057,8 +1043,8 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies /* 7003: disable non-modern cipher suites [1] * [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks * [1] https://browserleaks.com/ssl ***/ - // user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); // [DEFAULT: false FF109+] - // user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false); // [DEFAULT: false FF109+] + // user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); + // user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false); // user_pref("security.ssl3.ecdhe_rsa_aes_128_sha", false); // user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false); // user_pref("security.ssl3.rsa_aes_128_gcm_sha256", false); // no PFS @@ -1110,8 +1096,10 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] DNT is enforced with Tracking Protection which is used in ETP Strict (2701) ***/ // user_pref("privacy.donottrackheader.enabled", true); /* 7016: customize ETP settings + * [NOTE] FPP (fingerprintingProtection) is ignored when RFP (4501) is enabled * [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ - // user_pref("network.cookie.cookieBehavior", 5); // [DEFAULT: 5 FF103+] + // user_pref("network.cookie.cookieBehavior", 5); // [DEFAULT: 5] + // user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.partition.network_state.ocsp_cache", true); @@ -1182,42 +1170,8 @@ user_pref("browser.messaging-system.whatsNewPanel.enabled", false); * [SETTING] Search>Search Bar>Use the address bar for search and navigation>Show search terms instead of URL... ***/ user_pref("browser.urlbar.showSearchTerms.enabled", false); -/*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED - Documentation denoted as [-]. Items deprecated prior to FF91 have been archived at [1] - [1] https://github.com/arkenfox/user.js/issues/123 -***/ +/*** [SECTION 9999]: DEPRECATED / RENAMED ***/ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!"); -/* ESR102.x still uses all the following prefs -// [NOTE] replace the * with a slash in the line above to re-enable active ones -// FF103 -// 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810) - // 0=keep until they expire (default), 2=keep until you close Firefox - // [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed - // [-] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1681493,1681495,1681498,1759665,1764761 -user_pref("network.cookie.lifetimePolicy", 2); -// 6012: disable SHA-1 certificates - // [-] https://bugzilla.mozilla.org/1766687 - // user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1] -// FF114 -// 2816: set cache to clear on exit [FF96+] - // [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust - // [1] https://bugzilla.mozilla.org/1671182 - // [-] https://bugzilla.mozilla.org/1821651 - // user_pref("privacy.clearsitedata.cache.enabled", true); -// 4505: experimental RFP [FF91+] - // [-] https://bugzilla.mozilla.org/1824235 - // user_pref("privacy.resistFingerprinting.testGranularityMask", 0); -// 5017: disable Form Autofill heuristics - // Heuristics controls Form Autofill on forms without @autocomplete attributes - // [-] https://bugzilla.mozilla.org/1829670 - // user_pref("extensions.formautofill.heuristics.enabled", false); // [FF55+] -// FF115 - // 7001: disable offline cache (appCache) - // [NOTE] appCache storage capability was removed in FF90 - // [-] https://bugzilla.mozilla.org/1677718 - // user_pref("browser.cache.offline.enable", false); -// ***/ - /* ESR115.x still uses all the following prefs // [NOTE] replace the * with a slash in the line above to re-enable active ones // FF116 @@ -1237,6 +1191,24 @@ user_pref("security.family_safety.mode", 0); // [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ // [-] https://bugzilla.mozilla.org/1842457 // user_pref("dom.webnotifications.serviceworker.enabled", false); +// FF118 +// 1402: limit font visibility (Windows, Mac, some Linux) [FF94+] + // Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed + // In normal windows: uses the first applicable: RFP over TP over Standard + // In Private Browsing windows: uses the most restrictive between normal and private + // 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts + // [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc + // [-] https://bugzilla.mozilla.org/1847599 + // user_pref("layout.css.font-visibility.private", 1); + // user_pref("layout.css.font-visibility.standard", 1); + // user_pref("layout.css.font-visibility.trackingprotection", 1); +// 2623: disable permissions delegation [FF73+] + // Currently applies to cross-origin geolocation, camera, mic and screen-sharing + // permissions, and fullscreen requests. Disabling delegation means any prompts + // for these will show/use their correct 3rd party origin + // [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion + // [-] https://bugzilla.mozilla.org/1697151 + // user_pref("permissions.delegation.enabled", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From 35e8def0b1e5ecf1198e7efe41cfe6aa0415b320 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 18 Oct 2023 14:59:33 +0000 Subject: [PATCH 176/203] network.dns.skipTRR-when-parental-control-enabled --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 6f783a4..edb18c9 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/1080 if you want the full list prior to FF118 - Last updated: 29-September-2023 + Last updated: 18-October-2023 Instructions: - [optional] close Firefox and backup your profile @@ -41,6 +41,7 @@ 'layout.css.font-visibility.resistFingerprinting', // 116 'layout.css.font-visibility.standard', // 118 'layout.css.font-visibility.trackingprotection', // 118 + 'network.dns.skipTRR-when-parental-control-enabled', // 119 'permissions.delegation.enabled', // 118 'security.family_safety.mode', // 117 /* 103-115 */ From e2681baec38e7ad09fe1f81c6da5ff84c81b7117 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 1 Nov 2023 22:02:55 +0000 Subject: [PATCH 177/203] javascript.use_us_english_locale https://bugzilla.mozilla.org/1846224 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index edb18c9..18de648 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/1080 if you want the full list prior to FF118 - Last updated: 18-October-2023 + Last updated: 2-November-2023 Instructions: - [optional] close Firefox and backup your profile @@ -37,6 +37,7 @@ /* DEPRECATED */ /* 116-128 */ 'dom.webnotifications.serviceworker.enabled', // 117 + 'javascript.use_us_english_locale', // 119 'layout.css.font-visibility.private', // 118 'layout.css.font-visibility.resistFingerprinting', // 116 'layout.css.font-visibility.standard', // 118 From d94d68245f77665546f9b736f430540295e6229e Mon Sep 17 00:00:00 2001 From: Tad <tad@spotco.us> Date: Thu, 2 Nov 2023 16:18:47 -0400 Subject: [PATCH 178/203] Add favicon for Mull Signed-off-by: Tad <tad@spotco.us> --- wikipiki/logo-mull.png | Bin 0 -> 1566 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/logo-mull.png diff --git a/wikipiki/logo-mull.png b/wikipiki/logo-mull.png new file mode 100644 index 0000000000000000000000000000000000000000..d80042f89f667fa7bd1370547fdf5a16030eac4c GIT binary patch literal 1566 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 Q$^ZZW07*qoM6N<$g8weihyVZp literal 0 HcmV?d00001 From 96210522d8ed072565c3d5abcbcdb0a024aa7e01 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 2 Nov 2023 20:36:12 +0000 Subject: [PATCH 179/203] Add favicon for LibreWolf --- wikipiki/logo-librewolf.png | Bin 0 -> 1253 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wikipiki/logo-librewolf.png diff --git a/wikipiki/logo-librewolf.png b/wikipiki/logo-librewolf.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb9299cb2ce9fa60787c4abdaee86f6af98dd26 GIT binary patch literal 1253 zcmaKqeK6Ds9L9g8$-6{~)49&eo-ScabdB_ayzDZY6_Rw`dU4|-=3J+otvf<*r@|q5 z>$qiY)@xp3$;%>XR#<hyid*Vb-goibp5~gnnVXw=zR&kF&&>1R6H9ZpQ&#v$fglKF z2YVYA>EHC%$;n9FCMT|mAXXaEsIImEh%yj&Krok81S02eW-Wu%3qTYuvlOJtUv_E! z9zG=hg!e6J@&W#b|Fb9!|E(1TkYQmJ3#$tuTL?Ke<k?VQL!}67ilABqH4fA{&?v_G zVr(deW(jo4pj!^Ta_CpUpaP@{e0Cq7S7J*gOsZg74RSTMRbzV%EFNH2EiCI`Rfm0C z?B~L|9`+4zcnE4EoEqWW2wD?dnn7>Ip%%Ecz=MawJb3bOq!nJR@NLKOM>x@epvU;S z6Q?^7+=-AU2z`QZKECDSTo=B73Pv|B_8__!F}=9di&z2T1c(>lav!et;rcVA_9JHy zzYHOF2)_!!6rx}ltYH+5fHQ*P5tNLgbQEQys1%_}glZ9L#_(VawPUCo19u$t<9PTA z{I}?N2f-xzCh=k#!Wq1r#po=4pMz))<8yd5kJt0~V;&P?yb<HA7}E=wS-|W9<`yAY z!om_3m#`$A2=MXwjq=jz><n{prW3Mq@=D4o8k$<#x(1}J#^gh8?jDC3(J^tC6O)pE zPDxF>&24IKX>IT14+&q2#>OY7rsw9xlIK)~Ug_@49BlTvYH9^=WskV5SQj;zoq14D zVie>-5||pUTQIVtJZt0lc$z=r><*GkaN3$07-5odPp#v{_)us~y-?D6y=!yvq?b2) zi%G<pI3)}7T!O+)GjlN0&A+s&zuiCfMwx0uTmz#cy|8Mlgkrk$Ky1JT#XPww=H@Uz zjq7{7si%wwT-h^wYCYVK9t|HnYje>q>RgqQy*JSq#GEzv>w8Db?qSU9>5~*s^4}aB zGMf_Z*krBb7oXwK5D`lcc|h72^uyh6*76vo`*u5~-M*7`t9klaV6t(7C&Bve+Roet zruNy4$l%<Tb%u(z<=gXS+SLy&PKG`1ZegFXPZ9)sRFPkwUA${6>y=4a!!_c`)Ot7G zE4V+JA9&2hub(~2SzY%jC4>GI`DUbBTk5Ugy`M1XmTx@6Rf{F%Df`Exj*1l&8fDmF zvSjW0z+EvuNi%yhjTp`>y^*UaR>sY={MQ3FEl)l@uCxPPUDS4i8hI67w4PYaP?B+R zW-XsJZAvFu&rjHEc)3${M6(w6wE1N9K3DBjVJ<NP)T1S1GUZPGDh0|1PJ`Cgvuz+b z@|cW3H(}&Q(v|S_dC0#qprsd0t;@9*J7x@C6Gxp=yYVW@x7M?t!?K=sBM*~!ghY41 zpXM}CncWw$(!<h|Dx73E9<z6<UC^k@3h~wYVuQ6Pv-^aJPPs%S(YK|Pl9r=nA#X{) xq5sqQO6~ZFZcVL@M61wrzA&UCmCPe0;x{8Z|MUQz2<Zk12U};G!u?-f_!CRX$>jh5 literal 0 HcmV?d00001 From 29bb5a35f0908143f395b86263746988168c7966 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 2 Nov 2023 21:17:15 +0000 Subject: [PATCH 180/203] rename/add icons (#1760) --- .../{logo-librewolf.png => icon-librewolf.png} | Bin wikipiki/{logo-mull.png => icon-mull.png} | Bin wikipiki/icon-mullvadbrowser.png | Bin 0 -> 1237 bytes wikipiki/icon-torbrowser.png | Bin 0 -> 2044 bytes 4 files changed, 0 insertions(+), 0 deletions(-) rename wikipiki/{logo-librewolf.png => icon-librewolf.png} (100%) rename wikipiki/{logo-mull.png => icon-mull.png} (100%) create mode 100644 wikipiki/icon-mullvadbrowser.png create mode 100644 wikipiki/icon-torbrowser.png diff --git a/wikipiki/logo-librewolf.png b/wikipiki/icon-librewolf.png similarity index 100% rename from wikipiki/logo-librewolf.png rename to wikipiki/icon-librewolf.png diff --git a/wikipiki/logo-mull.png b/wikipiki/icon-mull.png similarity index 100% rename from wikipiki/logo-mull.png rename to wikipiki/icon-mull.png diff --git a/wikipiki/icon-mullvadbrowser.png b/wikipiki/icon-mullvadbrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..f5381b62a0d4809a258f70acad763ba9c1f25af1 GIT binary patch literal 1237 zcmV;`1S<Q9P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000D>Nkl<ZcwX(6 zONd<66UKkv?e6r1dFTI^BxH0#5=?w1LCi}hqM|DUQ50NeA?|}4vl1bSh!S096*1yc z+zA@cj0?d>9LFe#n)J+=hXhGahUuQ3?mp#^;vAZ}c5ii&Z*lJ_PF0<+>Z^0P{M)z% z(Seb}Cq@R>lwLu$ivVN-jLvn22*KR$Kn4U1hscOw8Nq_vfyzR&d9?cR(ds`E*!0X> zr!wgX21o{$_RSx@BQRehq0TjcnYmMnb;yl(=01AqC=QBrqP?^^kb!wVP>MCfBoh*5 z&Lc94zR3cNJPaAeE*yCRVY!*k#LUL~|B?an;x${l&DR~;rF}CuCDxa#Di>Ob#!4KR znH+Q_V67TR=2X%1W1o{i#)p;t%r36OItr9fFc1id;ZmI=<7Y54vdp{n#!rU;6u?AJ z0?QaE&BXdTAj}G2B_66>qVj7$fQS%SVq`pi`vv|tP^73j<`NNF4crSs)}27RxrBiD zc>2l9SQ}_(5CoH>O#ZRJ%#D&Egh3og35^dmd0>U~;d?I83`WaDD}a5mM4U_O-GL={ zh?$FqGO$8`ws>&I91|Dsq%ytaPHAG?cxo#g7{5euut^p~$^6QOW&^Nzcy|J{8U(LK zz8fI;J)<bbHe6%>mg}6oFhr%=6dl;LvCLh!EwE+NWwOB*7Vxf_2(6`bVGunea7UT6 z`U~T+eQow^|B;Dbp5WrOKcfHuniyNhW82Q4ffj}X;rcX}qJ=~+2^wI+@GBD&Af@-% z#>*VoI?vSHT1{Q4B8i<FhS@tl%kbz8C>WSL1dmyfz>wr=tUH0wTqahOo}|M;hRSXB z-u*4-FCOCD>{S!e#Q1jhY@0;=Eli}T1bKM7Aq)a$JtYXsHIT?bFuz!2cx?+Z7#o{o z-;N58%#Ep9uiO4@Ga4S9hk_wfBH<9hB|t(J)P;aEAOvqeSS$b#)4!J?l$p415fuab z?*EGKetv;QtEGMSypLAM0ZdoQ%-4!MynWFlGrwKn(weEq5H35@<P&u?fWYe?{NFx# zb5Ue4JaU~!cYni;g;9n^ue<g^y!_rejy+cefrpxZh+Iw4gMd$~B*RR^p^4KRm^@d| z<W!l1JC{)@u>0PxY1G%Ez5oHfJimssQ?g^v2B8>7`VIi72LWfAzHfL?Vi9g8dhJv{ z2j6W#meDs*qp!b~{9b%}09wm3Ye&sNHzi0pMXzgUMkdKDVA0!Btasu2(h7+I?pPnd zoFgWte=9I^RX{-U5aJ~Y0eKEWF9NK-rvfRSV?-Q3)z2#UcnOhUxaDH{zJ&6BQVAZ9 z<&yY29Yh{T5)sPxI?FQQ3AzzTXDc0~m^@|lD)Pl!=Q<IVVe+ly(p`dlMKKAaw|W<k zD<2^t%X#-E;99w6$4?F^4%*C>LL^2Ap<5>aIQ?0f$>|abn04y!UcCvVmV=I;9E3bU z<N)X-6FJ%GPs`THPeP>PvhFir@I$Vo+&bBb%&I*_09xHy2o)l7nvQH9DbYLuY|crC z;(@t;8%v8QvHSQc*(ijmW>$ZdYPHIL1-I}wde@9m!FAfg00000NkvXXu0mjfs$V|y literal 0 HcmV?d00001 diff --git a/wikipiki/icon-torbrowser.png b/wikipiki/icon-torbrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7e8d1d3e70ad8a3262ccc4a4baacf91a2131b5 GIT binary patch literal 2044 zcmV<Y2Lt$tP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP<VFdsH2a!ocK~#7F%~xG) z99I?o&g}f{|Jsi0q$JIzvD&l=icM8Yc?dzON_jw0iz?a*Nb-Wj3wD4P#7lyNsGwEW zh(}Q37bFmE8dOC*6g5SmKR}grn>ex465A<p?AWo__SpL~GnaGkot<5m76)G1k!NS_ z-<<D!=R4<K1E26kw>$CF{)K{DF#9M>93Y7Od>27R{=&sFe<Z9JWS3KRs_a<qYu_&S zzI40a-4K8@Y}@t#CB%SXQ9<?z2qKUW{62c|JPCd`4U<w<TDW$K94j^9CXy#Zgu{=& z*)j2d130~Jc_5L*QNuFwg2ei{La)Ah^BvU;Dhb#k30H!!(&So69;U0Iz_BO(mK*+` z0le^V<+xQa2FX}AS;*fO1A-cTW2)D3P1s=y-k6Qxh6}OmNB|(Uh)PfXJ%8l30sQ`< z$_cALhYTZfRL)`wqMufqS-F)RMZyL$TWoY~&mq^DflVnakD8c#xh7PcBzr_BpL)CF z@P+_>`?-bVZdZb19yzS1wT!oxslJOBMwkvk2ASx%GmE>wRKVSjbRt_wVPQPL=m`&N zbAejUe?#9acdcW>Xm6bO?Cc>UB?g5dh+`-CM!-LzXtsrJhY<WE`7Xl{gnF(w6JYGc zRlM<&3Rc-@=e;H#_+b|00Dc%!7>L2)J@W$}$-s$S(?!^cSJORqG3u1;X|`n)p$X6| zL_PfOZN7~9ih%clKx5W{W2X2{i&QpA5C5ou{B{%bml}BEXBDktLIvK+j>8i>7S}Q0 z!#HTB6UDI2Lm@q5w}obcBm=S$a9h61dAYkxY`Wh<@7Ge;`<*PZY*5Z!TM2OPrwgb| z`sljP!uCg9YA_3aAo6uLHTWMP@I!IPun`#umBd4S29o};MZXS#i0558<%!AH*0B69 zA8y`2KZDq|&q2T_t1BU1e_lC?T~DN8BuRxr1mb(gi&qOVfM4yraeyo;N{*Ta0vR*S zfHI^#mU=)muG`*CpKgvd#OO;N-g{+LNptr%GAjOZ&eBW+<7YfrDZ<XLB;m7Qn28R+ z?27?30{_cMD5sRCnri(nV;)Av7!QwydOTt!*=1;va{JnwRq@X6mLMH@@Vj{gz7Ud$ zskhb?3*8(F*_OaqK?h<0+_yKBYSwC(v4wnBci3jI2}H4?HL?5aS?ql#3o8Se6*To$ z6?0>CWbQCk?3r>*zgxq~tdBc(J4m>sK=~o|#{j}0?2{F*MYCx0vIR&!)g6UFN=2@B zvIcq|NlDM7c=6A3tIFf8pLZz;AXs=}`a(_hx!ndyP#lV)Y@14efhhP)mlcRsoe}Nj zr!8-FK_T@-Ypk%%f}LY#mIdao)>U7+JE63sayr!WOcr7gsw6MO03_;qJ%A$&G;2JX zB{W2<PnQR3*=^gPxKEbkx)y3wGbGj8i)e`osUL*#G7Z4TLcJymp`J#1%Td(^+OXby zbn$I&MB%zJzE%maIPHVCWo9Fx#+I)8GTv&vmD2NM2xUn4buk9e2>r>x3p?_m74hB- zgyKKi0wQlC812Rvt~GG^l{IG4VNnU}+?Q7U<FBt!WDJ{jI%>_#m72-~zDCfdfwQcz zzBSK>lQa<Rp=!5_kO<K#+f5+q_uQ}Nsk$WNWD1i)y7$pEw%qSx=|%%n=T-Vqcdvt7 zkBQm$YVekP6;n>3vK&-d;D`QciF9GECPN+<oK{hi8PH0>W|qkOUuEh8l`$c0e=vy$ zo-8PEXP%uEGS>3D{g3Aq+JF3EQHoMAz@ItW(tzofjYgxgx)Ky*4R=z!7b~ShG`C>U z@?I7!tqJbse5YJD*ZTepiv8O7Uw$)(sgartq4b>gJeEU+8JRr4$^ay-V&WIxJ*Q&^ zN{hTR2`b62&)=vj!bz0@eW;1g0a23bLyig$eeqkJ*z;Hxot%c=ypJ<KpT)?_OKP%{ zHt@{QR<-EeKP@u|Un3_mjP@*0>a@)vW?|58h{COz8oIW)I^7~c>V$}PVaY(m&g_*M ztt|z(`F?=P2L=psxvD4OWC%|WeFpi>CZ@`3`0L4eX!gV;7rq!kyc;SO5FV56c@-av zb9H?fKn#PZnFSPg()mADaQW30+?uNE0mhnRqfeK%qNmqY)Sr2FrY(lX(Nguk39M6e z+x7j-_;KzWl<uW6e9Y>xVVXvq1@Q?b%F)q_W$g){;Wqc?(fd#*zVOtY>PU8Nq>2}R zd>u7U!{w!==T`1ncO?7BL+KCF<0tuXP%bkqLVlAYGC32XC52d<#<usB*m`=C=-H7+ zZc_%1lS27a6>q;#5pnHCF#No?>+pwdeeALPNM^jmE)F0f&$5WJ9k$94+cDzeaMxF_ ztNE5~qFza3dD_DGpBt#H>MdQfgP{+5z99h3#MnXp$WbCbtVBALDkd_7?W%ag>Ey~* zC#o&+X{So-a+YT<^5%Q&Id50#<7{mBui2n`sc4wyK~Bm;Y`fT68BqX=Xl|-h0-yy@ z_{+dtEtMAg7ysM$Z~LE9c^%1KIlv`!zd_W;Rj`i%<<({-J>}xU7|wF6PX}hTypiEg a&Gm1|sgw5)O}6a-0000<MNUMnLSTYVf#Kx< literal 0 HcmV?d00001 From fc251637635cce451067aa448a66f803f8c4d577 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Fri, 10 Nov 2023 20:52:23 -0300 Subject: [PATCH 181/203] Correct archived version link in arkenfox-cleanup.js (#1763) --- scratchpad-scripts/arkenfox-cleanup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 18de648..1e8df4d 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -3,7 +3,7 @@ - removed from the arkenfox user.js - deprecated by Mozilla but listed in the arkenfox user.js in the past - There is an archived version at https://github.com/arkenfox/user.js/issues/1080 + There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list prior to FF118 Last updated: 2-November-2023 From f95c6829fe3c0fcc478756d7acbc55020d78b141 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 19 Nov 2023 09:56:47 +0000 Subject: [PATCH 182/203] fixup date/reference --- scratchpad-scripts/arkenfox-cleanup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 1e8df4d..6956979 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -4,7 +4,7 @@ - deprecated by Mozilla but listed in the arkenfox user.js in the past There is an archived version at https://github.com/arkenfox/user.js/issues/123 - if you want the full list prior to FF118 + if you want the full list since jesus Last updated: 2-November-2023 From fd72683abe15de5cf57574125b64879e809cf5c4 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 20 Nov 2023 02:49:16 +0000 Subject: [PATCH 183/203] v119 (#1757) --- user.js | 98 ++++++++++++++++++++++----------------------------------- 1 file changed, 37 insertions(+), 61 deletions(-) diff --git a/user.js b/user.js index 4798b8a..1772671 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 18 October 2023 -* version: 118 +* date: 20 November 2023 +* version: 119 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -40,7 +40,7 @@ * INDEX: 0100: STARTUP - 0200: GEOLOCATION / LANGUAGE / LOCALE + 0200: GEOLOCATION 0300: QUIETER FOX 0400: SAFE BROWSING 0600: BLOCK IMPLICIT OUTBOUND @@ -100,7 +100,7 @@ user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // * [NOTE] This does not block you from adding your own ***/ user_pref("browser.newtabpage.activity-stream.default.sites", ""); -/*** [SECTION 0200]: GEOLOCATION / LANGUAGE / LOCALE ***/ +/*** [SECTION 0200]: GEOLOCATION ***/ user_pref("_user.js.parrot", "0200 syntax error: the parrot's definitely deceased!"); /* 0201: use Mozilla geolocation service instead of Google if permission is granted [FF74+] * Optionally enable logging to the console (defaults to false) ***/ @@ -109,16 +109,8 @@ user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/ /* 0202: disable using the OS's geolocation service ***/ user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] user_pref("geo.provider.use_corelocation", false); // [MAC] -user_pref("geo.provider.use_gpsd", false); // [LINUX] +user_pref("geo.provider.use_gpsd", false); // [LINUX] [HIDDEN PREF] user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] -/* 0210: set preferred language for displaying pages - * [SETTING] General>Language and Appearance>Language>Choose your preferred language... - * [TEST] https://addons.mozilla.org/about ***/ -user_pref("intl.accept_languages", "en-US, en"); -/* 0211: use en-US locale regardless of the system or region locale - * [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1] - * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 ***/ -user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] /*** [SECTION 0300]: QUIETER FOX ***/ user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!"); @@ -268,7 +260,7 @@ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost user_pref("network.proxy.socks_remote_dns", true); /* 0703: disable using UNC (Uniform Naming Convention) paths [FF61+] * [SETUP-CHROME] Can break extensions for profiles on network shares - * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/26424 ***/ + * [1] https://bugzilla.mozilla.org/1413868 ***/ user_pref("network.file.disable_unc_paths", true); // [HIDDEN PREF] /* 0704: disable GIO as a potential proxy bypass vector * Gvfs/GIO has a set of supported protocols like obex, network, archive, computer, @@ -297,8 +289,6 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: "" * [3] https://support.mozilla.org/en-US/kb/firefox-dns-over-https * [4] https://www.eff.org/deeplinks/2020/12/dns-doh-and-odoh-oh-my-year-review-2020 ***/ // user_pref("network.trr.mode", 3); -/* 0711: disable skipping DoH when parental controls are enabled [FF70+] ***/ -user_pref("network.dns.skipTRR-when-parental-control-enabled", false); /* 0712: set DoH provider * The custom uri is the value shown when you "Choose provider>Custom>" * [NOTE] If you USE custom then "network.trr.uri" should be set the same @@ -311,11 +301,11 @@ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); /* 0801: disable location bar making speculative connections [FF56+] * [1] https://bugzilla.mozilla.org/1348275 ***/ user_pref("browser.urlbar.speculativeConnect.enabled", false); -/* 0802: disable location bar contextual suggestions [FF92+] +/* 0802: disable location bar contextual suggestions * [SETTING] Privacy & Security>Address Bar>Suggestions from... * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] -user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); +user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] /* 0803: disable live search suggestions * [NOTE] Both must be true for the location bar to work * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine @@ -354,6 +344,10 @@ user_pref("browser.formfill.enable", false); * [4] https://earthlng.github.io/testpages/visited_links.html (see github wiki APPENDIX A on how to use) * [5] https://lcamtuf.blogspot.com/2016/08/css-mix-blend-mode-is-bad-for-keeping.html ***/ // user_pref("layout.css.visited_links_enabled", false); +/* 0830: enable separate default search engine in Private Windows and its UI setting + * [SETTING] Search>Default Search Engine>Choose a different default search engine for Private Windows only ***/ +user_pref("browser.search.separatePrivateDefault", true); // [FF70+] +user_pref("browser.search.separatePrivateDefault.ui.enabled", true); // [FF71+] /*** [SECTION 0900]: PASSWORDS [1] https://support.mozilla.org/kb/use-primary-password-protect-stored-logins-and-pas @@ -396,7 +390,7 @@ user_pref("browser.sessionstore.privacy_level", 2); /* 1005: disable automatic Firefox start and session restore after reboot [FF62+] [WINDOWS] * [1] https://bugzilla.mozilla.org/603903 ***/ user_pref("toolkit.winRegisterApplicationRestart", false); -/* 1006: disable favicons in shortcuts +/* 1006: disable favicons in shortcuts [WINDOWS] * URL shortcuts use a cached randomly named .ico file which is stored in your * profile/shortcutCache directory. The .ico remains after the shortcut is deleted * If set to false then the shortcuts use a generic Firefox icon ***/ @@ -417,7 +411,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * but the problem is that the browser can't know that. Setting this pref to true is the only way for the * browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server * [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site? - * [STATS] SSL Labs (Feb 2023) reports over 99.3% of top sites have secure renegotiation [4] + * [STATS] SSL Labs (Nov 2023) reports over 99.5% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 @@ -462,7 +456,7 @@ user_pref("security.cert_pinning.enforcement_level", 2); * 0 = disabled * 1 = consult CRLite but only collect telemetry * 2 = consult CRLite and enforce both "Revoked" and "Not Revoked" results - * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (FF99+, default FF100+) + * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (default) * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071 * [2] https://blog.mozilla.org/security/tag/crlite/ ***/ user_pref("security.remote_settings.crlite_filters.enabled", true); @@ -471,7 +465,7 @@ user_pref("security.pki.crlite_mode", 2); /** MIXED CONTENT ***/ /* 1241: disable insecure passive content (such as images) on https pages ***/ // user_pref("security.mixed_content.block_display_content", true); // Defense-in-depth (see 1244) -/* 1244: enable HTTPS-Only mode in all windows [FF76+] +/* 1244: enable HTTPS-Only mode in all windows * When the top-level is HTTPS, insecure subresources are also upgraded (silent fail) * [SETTING] to add site exceptions: Padlock>HTTPS-Only mode>On (after "Continue to HTTP Site") * [SETTING] Privacy & Security>HTTPS-Only Mode (and manage exceptions) @@ -603,12 +597,13 @@ user_pref("browser.download.manager.addToRecentDocs", false); user_pref("browser.download.always_ask_before_handling_new_types", true); /** EXTENSIONS ***/ -/* 2660: lock down allowed extension directories - * [SETUP-CHROME] This will break extensions, language packs, themes and any other - * XPI files which are installed outside of profile and application directories +/* 2660: limit allowed extension directories + * 1=profile, 2=user, 4=application, 8=system, 16=temporary, 31=all + * The pref value represents the sum: e.g. 5 would be profile and application directories + * [SETUP-CHROME] Breaks usage of files which are installed outside allowed directories * [1] https://archive.is/DYjAM ***/ user_pref("extensions.enabledScopes", 5); // [HIDDEN PREF] -user_pref("extensions.autoDisableScopes", 15); // [DEFAULT: 15] + // user_pref("extensions.autoDisableScopes", 15); // [DEFAULT: 15] /* 2661: disable bypassing 3rd party extension install prompts [FF82+] * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1659530,1681331 ***/ user_pref("extensions.postDownloadThirdPartyPrompt", false); @@ -625,7 +620,7 @@ user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin * [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ * [SETTING] to add site exceptions: Urlbar>ETP Shield * [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/ -user_pref("browser.contentblocking.category", "strict"); +user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF] /* 2702: disable ETP web compat features [FF93+] * [SETUP-HARDEN] Includes skip lists, heuristics (SmartBlock) and automatic grants * Opener and redirect heuristics are granted for 30 days, see [3] @@ -703,7 +698,6 @@ user_pref("privacy.sanitize.timeSpan", 0); 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) FF56 - 1369303 - spoof/disable performance API 1333651 - spoof User Agent & Navigator API version: android version spoofed as ESR (FF119 or lower) OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android @@ -716,7 +710,6 @@ user_pref("privacy.sanitize.timeSpan", 0); 1369309 - spoof media statistics 1382499 - reduce screen co-ordinate fingerprinting in Touch API 1217290 & 1409677 - enable some fingerprinting resistance for WebGL - 1382545 - reduce fingerprinting in Animation API 1354633 - limit MediaError.message to a whitelist FF58+ 1372073 - spoof/block fingerprinting in MediaDevices API (FF59) @@ -741,7 +734,7 @@ user_pref("privacy.sanitize.timeSpan", 0); 1653987 - limit font visibility to bundled and "Base Fonts" (Windows, Mac, some Linux) (FF80) 1461454 - spoof smooth=true and powerEfficient=false for supported media in MediaCapabilities (FF82) 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1) - 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100) + 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100-115) 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) 1422237 - return "srgb" with color-gamut (FF110) 1794628 - return "none" with inverted-colors (FF114) @@ -973,10 +966,9 @@ user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), and enabling FPI * disables those. FPI is no longer maintained except at Tor Project for Tor Browser's config ***/ user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] -/* 6009: enforce SmartBlock shims [FF81+] - * In FF96+ these are listed in about:compat +/* 6009: enforce SmartBlock shims (about:compat) [FF81+] * [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ -user_pref("extensions.webcompat.enable_shims", true); // [DEFAULT: true] +user_pref("extensions.webcompat.enable_shims", true); // [HIDDEN PREF] [DEFAULT: true] /* 6010: enforce no TLS 1.0/1.1 downgrades * [TEST] https://tls-v1-1.badssl.com:1010/ ***/ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] @@ -987,38 +979,13 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /* 6012: enforce Quarantined Domains [FF115+] * [WHY] https://support.mozilla.org/kb/quarantined-domains */ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] -/* 6050: prefsCleaner: previously active items removed from arkenfox 102-114 ***/ - // user_pref("beacon.enabled", ""); - // user_pref("browser.startup.blankWindow", ""); - // user_pref("browser.newtab.preload", ""); - // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", ""); - // user_pref("browser.newtabpage.activity-stream.feeds.snippets", ""); - // user_pref("browser.region.network.url", ""); - // user_pref("browser.region.update.enabled", ""); - // user_pref("browser.ssl_override_behavior", ""); - // user_pref("devtools.chrome.enabled", ""); - // user_pref("dom.disable_beforeunload", ""); - // user_pref("dom.disable_open_during_load", ""); - // user_pref("extensions.formautofill.available", ""); - // user_pref("extensions.formautofill.addresses.supported", ""); - // user_pref("extensions.formautofill.creditCards.available", ""); - // user_pref("extensions.formautofill.creditCards.supported", ""); - // user_pref("middlemouse.contentLoadURL", ""); -/* 6051: prefsCleaner: previously active items removed from arkenfox 115-127 ***/ +/* 6050: prefsCleaner: previously active items removed from arkenfox 115-127 ***/ // user_pref("accessibility.force_disabled", ""); - // user_pref("browser.fixup.alternate.enabled", ""); // user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", ""); // user_pref("network.protocol-handler.external.ms-windows-store", ""); // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", ""); // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", ""); // user_pref("privacy.partition.serviceWorkers", ""); -/* 6052: prefsCleaner: deprecated ESR102 items from FF103-115 ***/ - // user_pref("browser.cache.offline.enable", ""); - // user_pref("extensions.formautofill.heuristics.enabled", ""); - // user_pref("network.cookie.lifetimePolicy", ""); - // user_pref("privacy.clearsitedata.cache.enabled", ""); - // user_pref("privacy.resistFingerprinting.testGranularityMask", ""); - // user_pref("security.pki.sha1_enforcement_level", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); @@ -1103,7 +1070,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.partition.network_state.ocsp_cache", true); - // user_pref("privacy.query_stripping.enabled", true); // [FF101+] [ETP FF102+] + // user_pref("privacy.query_stripping.enabled", true); // [FF101+] // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true] @@ -1160,7 +1127,7 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan /*** [SECTION 9000]: NON-PROJECT RELATED ***/ user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!"); /* 9001: disable welcome notices ***/ -user_pref("browser.startup.homepage_override.mstone", "ignore"); +user_pref("browser.startup.homepage_override.mstone", "ignore"); // [HIDDEN PREF] /* 9002: disable General>Browsing>Recommend extensions/features as you browse [FF67+] ***/ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); @@ -1209,6 +1176,15 @@ user_pref("security.family_safety.mode", 0); // [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion // [-] https://bugzilla.mozilla.org/1697151 // user_pref("permissions.delegation.enabled", false); +// FF119 +// 0211: use en-US locale regardless of the system or region locale + // [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1] + // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 + // [-] https://bugzilla.mozilla.org/1846224 + // user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] +// 0711: disable skipping DoH when parental controls are enabled [FF70+] + // [-] https://bugzilla.mozilla.org/1586941 +user_pref("network.dns.skipTRR-when-parental-control-enabled", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From e4dd5aa4283560e538b4009039175018e24cdc28 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:35:14 +0000 Subject: [PATCH 184/203] updater.sh v4.0 - removed group root/wheel check --- updater.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/updater.sh b/updater.sh index 88e6e33..72c77fc 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 3.9 +## version: 4.0 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac, @infinitewarp @@ -393,11 +393,11 @@ update_updater "$@" getProfilePath # updates PROFILE_PATH or exits on error cd "$PROFILE_PATH" || exit 1 -# Check if any files have the owner/group as root/wheel. -if [ -n "$(find ./ -user 0 -o -group 0)" ]; then +# Check if any files have the owner as root/wheel. +if [ -n "$(find ./ -user 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, you will need to change ownership of the following files to your user:\n' - find . -user 0 -o -group 0 + find . -user 0 cd "$CURRDIR" exit 1 fi From 4a510a4b4ceda8a177831a77309f2faccf7e18d5 Mon Sep 17 00:00:00 2001 From: earthlng <earthlng@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:38:25 +0000 Subject: [PATCH 185/203] prefsCleaner.sh v2.1 - remove group root/wheel check --- prefsCleaner.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 6586609..b9739b2 100755 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -2,7 +2,7 @@ ## prefs.js cleaner for Linux/Mac ## author: @claustromaniac -## version: 2.0 +## version: 2.1 ## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh @@ -132,13 +132,13 @@ done ## change directory to the Firefox profile directory cd "$(dirname "${SCRIPT_FILE}")" -# Check if running as root and if any files have the owner/group as root/wheel. +# Check if running as root and if any files have the owner as root/wheel. if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then fQuit 1 "You shouldn't run this with elevated privileges (such as with doas/sudo)." -elif [ -n "$(find ./ -user 0 -o -group 0)" ]; then +elif [ -n "$(find ./ -user 0)" ]; then printf 'It looks like this script was previously run with elevated privileges, you will need to change ownership of the following files to your user:\n' - find . -user 0 -o -group 0 + find . -user 0 fQuit 1 fi @@ -148,7 +148,7 @@ echo -e "\n\n" echo " ╔══════════════════════════╗" echo " ║ prefs.js cleaner ║" echo " ║ by claustromaniac ║" -echo " ║ v2.0 ║" +echo " ║ v2.1 ║" echo " ╚══════════════════════════╝" echo -e "\nThis script should be run from your Firefox profile directory.\n" echo "It will remove any entries from prefs.js that also exist in user.js." From 33a84b608c8a1f871c6ce9c4d2b932dc57078fae Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 4 Feb 2024 20:09:30 +0000 Subject: [PATCH 186/203] v122 (#1764) --- user.js | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/user.js b/user.js index 1772671..bd7c46f 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 20 November 2023 -* version: 119 +* date: 5 February 2024 +* version: 122 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -56,6 +56,7 @@ 2600: MISCELLANEOUS 2700: ETP (ENHANCED TRACKING PROTECTION) 2800: SHUTDOWN & SANITIZING + 4000: FPP (fingerprintingProtection) 4500: RFP (resistFingerprinting) 5000: OPTIONAL OPSEC 5500: OPTIONAL HARDENING @@ -686,8 +687,32 @@ user_pref("privacy.cpd.cookies", false); * which will display a blank value, and are not guaranteed to work ***/ user_pref("privacy.sanitize.timeSpan", 0); +/*** [SECTION 4000]: FPP (fingerprintingProtection) + RFP (4501) overrides FPP + + In FF118+ FPP is on by default in private windows (4001) and in FF119+ is controlled + by ETP (2701). FPP will also use Remote Services in future to relax FPP protections + on a per site basis for compatibility (pref coming). + + 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux) + https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc + 1858181 - subtly randomize canvas per eTLD+1, per session and per window-mode (FF120+) +***/ +user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); +/* 4001: enable FPP in PB mode [FF114+] + * [NOTE] In FF119+, FPP for all modes (7106) is enabled with ETP Strict (2701) ***/ + // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+] +/* 4002: set global FPP overrides [FF114+] + * Controls what protections FPP uses globally, including "RFPTargets" (despite the name these are + * not used by RFP) e.g. "+AllTargets,-CSSPrefersColorScheme" or "-AllTargets,+CanvasRandomization" + * [NOTE] Be aware that not all RFP protections are necessarily in RFPTargets + * [WARNING] Not recommended. Either use RFP or FPP at defaults + * [1] https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargets.inc ***/ + // user_pref("privacy.fingerprintingProtection.overrides", ""); + /*** [SECTION 4500]: RFP (resistFingerprinting) - RFP covers a wide range of ongoing fingerprinting solutions. + RFP overrides FPP (4000) + It is an all-or-nothing buy in: you cannot pick and choose what parts you want [TEST] https://arkenfox.github.io/TZP/tzp.html @@ -741,8 +766,8 @@ user_pref("privacy.sanitize.timeSpan", 0); ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable RFP - * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar - * RFP also has a few side effects: mainly timezone is UTC0, and websites will prefer light theme + * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar. + * RFP also has a few side effects: mainly timezone is UTC, and websites will prefer light theme * [NOTE] pbmode applies if true and the original pref is false * [1] https://bugzilla.mozilla.org/418986 ***/ user_pref("privacy.resistFingerprinting", true); // [FF41+] @@ -1069,7 +1094,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] - // user_pref("privacy.partition.network_state.ocsp_cache", true); + // user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true FF123+] // user_pref("privacy.query_stripping.enabled", true); // [FF101+] // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); From c2f191448c0af23c961053b8e450f6c8a71e5567 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 6 Jun 2024 20:21:14 +0000 Subject: [PATCH 187/203] v126 (#1816) --- user.js | 127 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 89 insertions(+), 38 deletions(-) diff --git a/user.js b/user.js index bd7c46f..fdc692e 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 5 February 2024 -* version: 122 +* date: 7 June 2024 +* version: 126 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -35,7 +35,7 @@ - It is recommended to not use the updater, or you will get a later version which may cause issues. So you should manually append your overrides (and keep a copy), and manually update when you change ESR releases (arkenfox is already past that release) - - If you decide to keep updating, then the onus is on - also see section 9999 + - If you decide to keep updating, then the onus is on you - also see section 9999 * INDEX: @@ -95,8 +95,8 @@ user_pref("browser.startup.homepage", "about:blank"); user_pref("browser.newtabpage.enabled", false); /* 0105: disable sponsored content on Firefox Home (Activity Stream) * [SETTING] Home>Firefox Home Content ***/ -user_pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] Pocket > Sponsored Stories -user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Sponsored shortcuts +user_pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] +user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Shortcuts>Sponsored shortcuts /* 0106: clear default topsites * [NOTE] This does not block you from adding your own ***/ user_pref("browser.newtabpage.activity-stream.default.sites", ""); @@ -158,9 +158,6 @@ user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+] user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF] user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF] user_pref("toolkit.coverage.endpoint.base", ""); -/* 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+] - * Defense-in-depth: currently covered by 0331 ***/ -user_pref("browser.ping-centre.telemetry", false); /* 0335: disable Firefox Home (Activity Stream) telemetry ***/ user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); user_pref("browser.newtabpage.activity-stream.telemetry", false); @@ -303,12 +300,14 @@ user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!"); * [1] https://bugzilla.mozilla.org/1348275 ***/ user_pref("browser.urlbar.speculativeConnect.enabled", false); /* 0802: disable location bar contextual suggestions - * [SETTING] Privacy & Security>Address Bar>Suggestions from... + * [NOTE] The UI is controlled by the .enabled pref + * [SETTING] Search>Address Bar>Suggestions from... * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ -user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] -user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] + // user_pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+] [DEFAULT: false] + // user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] [DEFAULT: false] + // user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] [DEFAULT: false] /* 0803: disable live search suggestions - * [NOTE] Both must be true for the location bar to work + * [NOTE] Both must be true for live search to work in the location bar * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine * [SETTING] Search>Provide search suggestions | Show search suggestions in address bar results ***/ user_pref("browser.search.suggest.enabled", false); @@ -321,8 +320,9 @@ user_pref("browser.urlbar.addons.featureGate", false); // [FF115+] user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF] user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false] user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] +user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] /* 0807: disable urlbar clipboard suggestions [FF118+] ***/ - // user_pref("browser.urlbar.clipboard.featureGate", false); // [DEFAULT: false] + // user_pref("browser.urlbar.clipboard.featureGate", false); // [DEFAULT: true FF125+] /* 0810: disable search and form history * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [NOTE] We also clear formdata on exit (2811) @@ -332,7 +332,7 @@ user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: fa user_pref("browser.formfill.enable", false); /* 0815: disable tab-to-search [FF85+] * Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search - * [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines ***/ + * [SETTING] Search>Address Bar>When using the address bar, suggest>Search engines ***/ // user_pref("browser.urlbar.suggest.engines", false); /* 0820: disable coloring of visited links * [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive @@ -412,7 +412,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!"); * but the problem is that the browser can't know that. Setting this pref to true is the only way for the * browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server * [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site? - * [STATS] SSL Labs (Nov 2023) reports over 99.5% of top sites have secure renegotiation [4] + * [STATS] SSL Labs (May 2024) reports over 99.7% of top sites have secure renegotiation [4] * [1] https://wiki.mozilla.org/Security:Renegotiation * [2] https://datatracker.ietf.org/doc/html/rfc5746 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 @@ -517,6 +517,12 @@ user_pref("privacy.userContext.ui.enabled", true); * [NOTE] The menu is always shown on long press and right click * [SETTING] General>Tabs>Enable Container Tabs>Settings>Select a container for each new tab ***/ // user_pref("privacy.userContext.newTabContainerOnLeftClick.enabled", true); +/* 1703: set external links to open in site-specific containers [FF123+] + * [SETUP-WEB] Depending on your container extension(s) and their settings + * true=Firefox will not choose a container (so your extension can) + * false=Firefox will choose the container/no-container (default) + * [1] https://bugzilla.mozilla.org/1874599 ***/ + // user_pref("browser.link.force_default_user_context_id_for_external_opens", true); /*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!"); @@ -583,6 +589,11 @@ user_pref("pdfjs.disabled", false); // [DEFAULT: false] user_pref("pdfjs.enableScripting", false); // [FF86+] /* 2624: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] */ user_pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: false NON-LINUX] +/* 2630: disable content analysis by DLP (Data Loss Prevention) agents + * DLP agents are background processes on managed computers that allow enterprises to monitor locally running + * applications for data exfiltration events, which they can allow/block based on customer defined DLP policies. + * [1] https://github.com/chromium/content_analysis_sdk */ +user_pref("browser.contentanalysis.default_allow", false); // [FF124+] [DEFAULT: false] /** DOWNLOADS ***/ /* 2651: enable user interaction for security by always asking where to download @@ -636,51 +647,70 @@ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!" * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); -/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS ***/ +/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS | v2 migration is FF128+ ***/ /* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * [NOTE] If "history" is true, downloads will also be cleared - * [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies - * [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/ + * [NOTE] If "history" is true, downloads will also be cleared ***/ user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true] +user_pref("privacy.clearOnShutdown_v2.cache", true); // [FF128+] [DEFAULT: true] user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.sessions", true); // [DEFAULT: true] +user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [FF128+] [DEFAULT: true] // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] + // user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [FF128+] [DEFAULT: false] /* 2812: set Session Restore to clear on shutdown (if 2810 is true) [FF34+] * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) * [NOTE] If true, this prevents resuming from crashes (also see 5008) ***/ // user_pref("privacy.clearOnShutdown.openWindows", true); -/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ ***/ +/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ | v2 migration is FF128+ ***/ /* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note below). * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) + * [NOTE] "sessions": Active Logins (has no site exceptions): refers to HTTP Basic Authentication [1], not logins via cookies * [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271) * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question) - * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ + * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings + * [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/ user_pref("privacy.clearOnShutdown.cookies", true); // Cookies user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data +user_pref("privacy.clearOnShutdown.sessions", true); // Active Logins [DEFAULT: true] +user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true) // Cookies, Site Data, Active Logins [FF128+] -/** SANITIZE MANUAL: IGNORES "ALLOW" SITE EXCEPTIONS ***/ -/* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] - * This dialog can also be accessed from the menu History>Clear Recent History +/** SANITIZE SITE DATA: IGNORES "ALLOW" SITE EXCEPTIONS ***/ +/* 2820: set manual "Clear Data" items [SETUP-CHROME] [FF128+] + * Firefox remembers your last choices. This will reset them when you start Firefox + * [SETTING] Privacy & Security>Browser Privacy>Cookies and Site Data>Clear Data ***/ +user_pref("privacy.clearSiteData.cache", true); +user_pref("privacy.clearSiteData.cookiesAndStorage", false); // keep false until it respects "allow" site exceptions +user_pref("privacy.clearSiteData.historyFormDataAndDownloads", true); + // user_pref("privacy.clearSiteData.siteSettings", false); + +/** SANITIZE HISTORY: IGNORES "ALLOW" SITE EXCEPTIONS | clearHistory migration is FF128+ ***/ +/* 2830: set manual "Clear History" items, also via Ctrl-Shift-Del [SETUP-CHROME] * Firefox remembers your last choices. This will reset them when you start Firefox * [NOTE] Regardless of what you set "downloads" to, as soon as the dialog - * for "Clear Recent History" is opened, it is synced to the same as "history" ***/ + * for "Clear Recent History" is opened, it is synced to the same as "history" + * [SETTING] Privacy & Security>History>Custom Settings>Clear History ***/ user_pref("privacy.cpd.cache", true); // [DEFAULT: true] +user_pref("privacy.clearHistory.cache", true); user_pref("privacy.cpd.formdata", true); // [DEFAULT: true] user_pref("privacy.cpd.history", true); // [DEFAULT: true] + // user_pref("privacy.cpd.downloads", true); // not used, see note above +user_pref("privacy.clearHistory.historyFormDataAndDownloads", true); +user_pref("privacy.cpd.cookies", false); user_pref("privacy.cpd.sessions", true); // [DEFAULT: true] user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] -user_pref("privacy.cpd.cookies", false); - // user_pref("privacy.cpd.downloads", true); // not used, see note above +user_pref("privacy.clearHistory.cookiesAndStorage", false); // user_pref("privacy.cpd.openWindows", false); // Session Restore // user_pref("privacy.cpd.passwords", false); // user_pref("privacy.cpd.siteSettings", false); -/* 2822: reset default "Time range to clear" for "Clear Recent History" (2820) + // user_pref("privacy.clearHistory.siteSettings", false); + +/** SANITIZE MANUAL: TIMERANGE ***/ +/* 2840: set "Time range to clear" for "Clear Data" (2820) and "Clear History" (2830) * Firefox remembers your last choice. This will reset the value when you start Firefox * 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today * [NOTE] Values 5 (last 5 minutes) and 6 (last 24 hours) are not listed in the dropdown, @@ -692,15 +722,15 @@ user_pref("privacy.sanitize.timeSpan", 0); In FF118+ FPP is on by default in private windows (4001) and in FF119+ is controlled by ETP (2701). FPP will also use Remote Services in future to relax FPP protections - on a per site basis for compatibility (pref coming). + on a per site basis for compatibility (4003). 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux) https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc 1858181 - subtly randomize canvas per eTLD+1, per session and per window-mode (FF120+) ***/ -user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); +user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); /* 4001: enable FPP in PB mode [FF114+] - * [NOTE] In FF119+, FPP for all modes (7106) is enabled with ETP Strict (2701) ***/ + * [NOTE] In FF119+, FPP for all modes (7016) is enabled with ETP Strict (2701) ***/ // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+] /* 4002: set global FPP overrides [FF114+] * Controls what protections FPP uses globally, including "RFPTargets" (despite the name these are @@ -709,6 +739,8 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); * [WARNING] Not recommended. Either use RFP or FPP at defaults * [1] https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargets.inc ***/ // user_pref("privacy.fingerprintingProtection.overrides", ""); +/* 4003: disable remote FPP overrides [FF127+] ***/ + // user_pref("privacy.fingerprintingProtection.remoteOverrides.enabled"; false); /*** [SECTION 4500]: RFP (resistFingerprinting) RFP overrides FPP (4000) @@ -720,7 +752,6 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); 418986 - limit window.screen & CSS media queries (FF41) 1281949 - spoof screen orientation (FF50) - 1330890 - spoof timezone as UTC0 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) FF56 1333651 - spoof User Agent & Navigator API @@ -740,7 +771,7 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); 1372073 - spoof/block fingerprinting in MediaDevices API (FF59) Spoof: enumerate devices as one "Internal Camera" and one "Internal Microphone" Block: suppresses the ondevicechange event - 1039069 - warn when language prefs are not set to "en*" (also see 0210, 0211) (FF59) + 1039069 - warn when language prefs are not set to "en*" (FF59) 1222285 & 1433592 - spoof keyboard events and suppress keyboard modifier events (FF59) Spoofing mimics the content language of the document. Currently it only supports en-US. Modifier events suppressed are SHIFT and both ALT keys. Chrome is not affected. @@ -763,6 +794,9 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) 1422237 - return "srgb" with color-gamut (FF110) 1794628 - return "none" with inverted-colors (FF114) + 1554751 - return devicePixelRatio as 2 (previously FF41+ was 1) (FF127) + 1787790 - normalize system fonts (FF128) + 1835987 - spoof timezone as Atlantic/Reykjavik (previously FF55+ was UTC) (FF128) ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable RFP @@ -796,6 +830,12 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] * [WARNING] DO NOT USE unless testing, see [1] comment 12 * [1] https://bugzilla.mozilla.org/1635603 ***/ // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); +/* 4506: disable RFP spoof english prompt [FF59+] + * 0=prompt, 1=disabled, 2=enabled (requires RFP) + * [NOTE] When changing from value 2, preferred languages ('intl.accept_languages') is not reset. + * [SETUP-WEB] when enabled, sets 'en-US, en' for displaying pages and 'en-US' as locale. + * [SETTING] General>Language>Choose your preferred language for displaying pages>Choose>Request English... ***/ +user_pref("privacy.spoof_english", 1); /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] @@ -867,7 +907,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow * [1] https://bugzilla.mozilla.org/1281959 ***/ // user_pref("browser.download.forbid_open_with", true); /* 5010: disable location bar suggestion types - * [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest ***/ + * [SETTING] Search>Address Bar>When using the address bar, suggest ***/ // user_pref("browser.urlbar.suggest.history", false); // user_pref("browser.urlbar.suggest.bookmark", false); // user_pref("browser.urlbar.suggest.openpage", false); @@ -1108,7 +1148,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ ***/ // user_pref("dom.webnotifications.enabled", false); /* 7019: disable Push Notifications [FF44+] - * [WHY] Push requires subscription + * [WHY] Website "push" requires subscription, and the API is required for CRLite (1224) * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" * [1] https://support.mozilla.org/kb/push-notifications-firefox ***/ // user_pref("dom.push.enabled", false); @@ -1119,6 +1159,10 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [1] https://groups.google.com/g/discuss-webrtc/c/6stQXi72BEU/m/2FwZd24UAQAJ * [2] https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates#section-3.1.1 ***/ // user_pref("media.peerconnection.enabled", false); +/* 7021: enable GPC (Global Privacy Control) in non-PB windows + * [WHY] Passive and active fingerprinting. Mostly redundant with Tracking Protection + * in ETP Strict (2701) and sanitizing on close (2800s) ***/ + // user_pref("privacy.globalprivacycontrol.enabled", true); /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING [WHY] They are insufficient to help anti-fingerprinting and do more harm than good @@ -1156,8 +1200,6 @@ user_pref("browser.startup.homepage_override.mstone", "ignore"); // [HIDDEN PREF /* 9002: disable General>Browsing>Recommend extensions/features as you browse [FF67+] ***/ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); -/* 9003: disable What's New toolbar icon [FF69+] ***/ -user_pref("browser.messaging-system.whatsNewPanel.enabled", false); /* 9004: disable search terms [FF110+] * [SETTING] Search>Search Bar>Use the address bar for search and navigation>Show search terms instead of URL... ***/ user_pref("browser.urlbar.showSearchTerms.enabled", false); @@ -1210,6 +1252,15 @@ user_pref("security.family_safety.mode", 0); // 0711: disable skipping DoH when parental controls are enabled [FF70+] // [-] https://bugzilla.mozilla.org/1586941 user_pref("network.dns.skipTRR-when-parental-control-enabled", false); +// FF123 +// 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+] + // Defense-in-depth: currently covered by 0331 + // [-] https://bugzilla.mozilla.org/1868988 +user_pref("browser.ping-centre.telemetry", false); +// FF126 +// 9003: disable What's New toolbar icon [FF69+] + // [-] https://bugzilla.mozilla.org/1724300 +user_pref("browser.messaging-system.whatsNewPanel.enabled", false); // ***/ /* END: internal custom pref to test for syntax errors ***/ From 9655743d8cc558e04e0742ff10d51cdda1b3c9ff Mon Sep 17 00:00:00 2001 From: eleius <42178466+eleius@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:53:34 +0000 Subject: [PATCH 188/203] fixup missing semicolon (#1850) --- user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user.js b/user.js index fdc692e..01954cc 100644 --- a/user.js +++ b/user.js @@ -677,7 +677,7 @@ user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [F user_pref("privacy.clearOnShutdown.cookies", true); // Cookies user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data user_pref("privacy.clearOnShutdown.sessions", true); // Active Logins [DEFAULT: true] -user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true) // Cookies, Site Data, Active Logins [FF128+] +user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true); // Cookies, Site Data, Active Logins [FF128+] /** SANITIZE SITE DATA: IGNORES "ALLOW" SITE EXCEPTIONS ***/ /* 2820: set manual "Clear Data" items [SETUP-CHROME] [FF128+] From 47cbf5b9740ef59ed866874346d3fee3379f8da3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 7 Jun 2024 21:36:53 +0000 Subject: [PATCH 189/203] fixup sysntax, tidy --- user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user.js b/user.js index 01954cc..8087d85 100644 --- a/user.js +++ b/user.js @@ -322,7 +322,7 @@ user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: fal user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] /* 0807: disable urlbar clipboard suggestions [FF118+] ***/ - // user_pref("browser.urlbar.clipboard.featureGate", false); // [DEFAULT: true FF125+] + // user_pref("browser.urlbar.clipboard.featureGate", false); /* 0810: disable search and form history * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [NOTE] We also clear formdata on exit (2811) @@ -740,7 +740,7 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); * [1] https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargets.inc ***/ // user_pref("privacy.fingerprintingProtection.overrides", ""); /* 4003: disable remote FPP overrides [FF127+] ***/ - // user_pref("privacy.fingerprintingProtection.remoteOverrides.enabled"; false); + // user_pref("privacy.fingerprintingProtection.remoteOverrides.enabled", false); /*** [SECTION 4500]: RFP (resistFingerprinting) RFP overrides FPP (4000) From 6446d73cf572fcdf631534a5a51276a64eec4a2d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Fri, 14 Jun 2024 06:14:26 +0000 Subject: [PATCH 190/203] add deprecated since FF119 --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 6956979..1948d07 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 2-November-2023 + Last updated: 14-June-2024 Instructions: - [optional] close Firefox and backup your profile @@ -36,6 +36,8 @@ const aPREFS = [ /* DEPRECATED */ /* 116-128 */ + 'browser.messaging-system.whatsNewPanel.enabled', // 126 + 'browser.ping-centre.telemetry', // 123 'dom.webnotifications.serviceworker.enabled', // 117 'javascript.use_us_english_locale', // 119 'layout.css.font-visibility.private', // 118 From 23caf6961483e0e55544cd4f3594734d0aa35cf0 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sat, 22 Jun 2024 15:44:54 +0000 Subject: [PATCH 191/203] v127 deprecated --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 1948d07..5155259 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 14-June-2024 + Last updated: 23-June-2024 Instructions: - [optional] close Firefox and backup your profile @@ -36,6 +36,7 @@ const aPREFS = [ /* DEPRECATED */ /* 116-128 */ + 'browser.contentanalysis.default_allow', // 127 'browser.messaging-system.whatsNewPanel.enabled', // 126 'browser.ping-centre.telemetry', // 123 'dom.webnotifications.serviceworker.enabled', // 117 @@ -47,6 +48,7 @@ 'network.dns.skipTRR-when-parental-control-enabled', // 119 'permissions.delegation.enabled', // 118 'security.family_safety.mode', // 117 + 'widget.non-native-theme.enabled', // 127 /* 103-115 */ 'browser.cache.offline.enable', // 115 'extensions.formautofill.heuristics.enabled', // 114 From ff5c959cb9b5a65ede9aab82b00cbb283b160e14 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 9 Jul 2024 05:49:23 +0000 Subject: [PATCH 192/203] geo.provider* --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 5155259..50bcb8a 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 23-June-2024 + Last updated: 9-July-2024 Instructions: - [optional] close Firefox and backup your profile @@ -75,6 +75,8 @@ 'browser.fixup.alternate.enabled', 'browser.taskbar.previews.enable', 'browser.urlbar.dnsResolveSingleWordsAfterSearch', + 'geo.provider.network.url', + 'geo.provider.network.logging.enabled', 'media.gmp-widevinecdm.enabled', 'network.protocol-handler.external.ms-windows-store', 'privacy.partition.always_partition_third_party_non_cookie_storage', From 11582f905a21971eb5869b48ef8c3f2d4eac4d89 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Tue, 6 Aug 2024 04:37:00 +0000 Subject: [PATCH 193/203] geo.provider.use_gpsd https://bugzilla.mozilla.org/show_bug.cgi?id=1803234 - removed in FF131 and it doesn't work: https://bugzilla.mozilla.org/show_bug.cgi?id=1763347 --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 50bcb8a..21e3438 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 9-July-2024 + Last updated: 6-August-2024 Instructions: - [optional] close Firefox and backup your profile @@ -77,6 +77,7 @@ 'browser.urlbar.dnsResolveSingleWordsAfterSearch', 'geo.provider.network.url', 'geo.provider.network.logging.enabled', + 'geo.provider.use_gpsd', 'media.gmp-widevinecdm.enabled', 'network.protocol-handler.external.ms-windows-store', 'privacy.partition.always_partition_third_party_non_cookie_storage', From f906f7f3b41fe3f6aaa744980431f4fdcd086379 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 26 Aug 2024 08:41:28 +0000 Subject: [PATCH 194/203] v128 (#1862) --- user.js | 122 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 53 deletions(-) diff --git a/user.js b/user.js index 8087d85..1dbf7d2 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 7 June 2024 -* version: 126 +* date: 26 August 2024 +* version: 128 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -57,7 +57,7 @@ 2700: ETP (ENHANCED TRACKING PROTECTION) 2800: SHUTDOWN & SANITIZING 4000: FPP (fingerprintingProtection) - 4500: RFP (resistFingerprinting) + 4500: OPTIONAL RFP (resistFingerprinting) 5000: OPTIONAL OPSEC 5500: OPTIONAL HARDENING 6000: DON'T TOUCH @@ -103,14 +103,9 @@ user_pref("browser.newtabpage.activity-stream.default.sites", ""); /*** [SECTION 0200]: GEOLOCATION ***/ user_pref("_user.js.parrot", "0200 syntax error: the parrot's definitely deceased!"); -/* 0201: use Mozilla geolocation service instead of Google if permission is granted [FF74+] - * Optionally enable logging to the console (defaults to false) ***/ -user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); - // user_pref("geo.provider.network.logging.enabled", true); // [HIDDEN PREF] /* 0202: disable using the OS's geolocation service ***/ user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] user_pref("geo.provider.use_corelocation", false); // [MAC] -user_pref("geo.provider.use_gpsd", false); // [LINUX] [HIDDEN PREF] user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX] /*** [SECTION 0300]: QUIETER FOX ***/ @@ -236,7 +231,7 @@ user_pref("network.prefetch-next", false); /* 0602: disable DNS prefetching * [1] https://developer.mozilla.org/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control ***/ user_pref("network.dns.disablePrefetch", true); - // user_pref("network.dns.disablePrefetchFromHTTPS", true); // [DEFAULT: true] +user_pref("network.dns.disablePrefetchFromHTTPS", true); /* 0603: disable predictor / prefetching ***/ user_pref("network.predictor.enabled", false); user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false] @@ -284,7 +279,7 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: "" * [SETTING] Privacy & Security>DNS over HTTPS * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/ * [2] https://wiki.mozilla.org/Security/DOH-resolver-policy - * [3] https://support.mozilla.org/en-US/kb/firefox-dns-over-https + * [3] https://support.mozilla.org/kb/firefox-dns-over-https * [4] https://www.eff.org/deeplinks/2020/12/dns-doh-and-odoh-oh-my-year-review-2020 ***/ // user_pref("network.trr.mode", 3); /* 0712: set DoH provider @@ -303,13 +298,13 @@ user_pref("browser.urlbar.speculativeConnect.enabled", false); * [NOTE] The UI is controlled by the .enabled pref * [SETTING] Search>Address Bar>Suggestions from... * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ - // user_pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+] [DEFAULT: false] - // user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] [DEFAULT: false] - // user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] [DEFAULT: false] +user_pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+] +user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] +user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] /* 0803: disable live search suggestions * [NOTE] Both must be true for live search to work in the location bar * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine - * [SETTING] Search>Provide search suggestions | Show search suggestions in address bar results ***/ + * [SETTING] Search>Show search suggestions | Show search suggestions in address bar results ***/ user_pref("browser.search.suggest.enabled", false); user_pref("browser.urlbar.suggest.searches", false); /* 0805: disable urlbar trending search suggestions [FF118+] @@ -323,9 +318,13 @@ user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: fa user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] /* 0807: disable urlbar clipboard suggestions [FF118+] ***/ // user_pref("browser.urlbar.clipboard.featureGate", false); +/* 0808: disable recent searches [FF120+] + * [NOTE] Recent searches are cleared with history (2811) + * [1] https://support.mozilla.org/kb/search-suggestions-firefox ***/ + // user_pref("browser.urlbar.recentsearches.featureGate", false); /* 0810: disable search and form history - * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [NOTE] We also clear formdata on exit (2811) + * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [SETTING] Privacy & Security>History>Custom Settings>Remember search and form history * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html * [2] https://bugzilla.mozilla.org/381681 ***/ @@ -377,8 +376,8 @@ user_pref("network.auth.subresource-http-auth-allow", 1); /*** [SECTION 1000]: DISK AVOIDANCE ***/ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!"); /* 1001: disable disk cache - * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this - * [NOTE] We also clear cache on exit (2811) ***/ + * [NOTE] We also clear cache on exit (2811) + * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this ***/ user_pref("browser.cache.disk.enable", false); /* 1002: disable media cache from writing to disk in Private Browsing * [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!"); user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); /* 2003: force a single network interface for ICE candidates generation [FF42+] * When using a system-wide proxy, it uses the proxy interface - * [1] https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate + * [1] https://developer.mozilla.org/docs/Web/API/RTCIceCandidate * [2] https://wiki.mozilla.org/Media/WebRTC/Privacy ***/ user_pref("media.peerconnection.ice.default_address_only", true); /* 2004: force exclusion of private IPs from ICE candidates [FF51+] @@ -592,8 +591,10 @@ user_pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: fa /* 2630: disable content analysis by DLP (Data Loss Prevention) agents * DLP agents are background processes on managed computers that allow enterprises to monitor locally running * applications for data exfiltration events, which they can allow/block based on customer defined DLP policies. + * 0=Block all requests, 1=Warn on all requests (which lets the user decide), 2=Allow all requests * [1] https://github.com/chromium/content_analysis_sdk */ -user_pref("browser.contentanalysis.default_allow", false); // [FF124+] [DEFAULT: false] +user_pref("browser.contentanalysis.enabled", false); // [FF121+] [DEFAULT: false] +user_pref("browser.contentanalysis.default_result", 0); // [FF127+] [DEFAULT: 0] /** DOWNLOADS ***/ /* 2651: enable user interaction for security by always asking where to download @@ -638,12 +639,14 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF] * Opener and redirect heuristics are granted for 30 days, see [3] * [1] https://blog.mozilla.org/security/2021/07/13/smartblock-v2/ * [2] https://hg.mozilla.org/mozilla-central/rev/e5483fd469ab#l4.12 - * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ + * [3] https://developer.mozilla.org/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ // user_pref("privacy.antitracking.enableWebcompat", false); /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); /* 2810: enable Firefox to clear items on shutdown + * [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811), or manually via site data (2820) and + * via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815) * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); @@ -665,9 +668,8 @@ user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [F /** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ | v2 migration is FF128+ ***/ /* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * [NOTE] Exceptions: A "cookie" block permission also controls "offlineApps" (see note below). - * serviceWorkers require an "Allow" permission. For cross-domain logins, add exceptions for - * both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) + * [NOTE] Exceptions: A "cookie" permission also controls "offlineApps" (see note below). For cross-domain logins, + * add exceptions for both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) * [NOTE] "sessions": Active Logins (has no site exceptions): refers to HTTP Basic Authentication [1], not logins via cookies * [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271) @@ -722,7 +724,9 @@ user_pref("privacy.sanitize.timeSpan", 0); In FF118+ FPP is on by default in private windows (4001) and in FF119+ is controlled by ETP (2701). FPP will also use Remote Services in future to relax FPP protections - on a per site basis for compatibility (4003). + on a per site basis for compatibility (4004). + + https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargetsDefault.inc 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux) 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!"); * [NOTE] In FF119+, FPP for all modes (7016) is enabled with ETP Strict (2701) ***/ // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+] /* 4002: set global FPP overrides [FF114+] - * Controls what protections FPP uses globally, including "RFPTargets" (despite the name these are - * not used by RFP) e.g. "+AllTargets,-CSSPrefersColorScheme" or "-AllTargets,+CanvasRandomization" - * [NOTE] Be aware that not all RFP protections are necessarily in RFPTargets - * [WARNING] Not recommended. Either use RFP or FPP at defaults + * uses "RFPTargets" [1] which despite the name these are not used by RFP + * e.g. "+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC" = all targets but allow prefers-color-scheme and do not change timezone + * e.g. "-AllTargets,+CanvasRandomization,+JSDateTimeUTC" = no targets but do use FPP canvas and change timezone + * [NOTE] Not supported by arkenfox. Either use RFP or FPP at defaults * [1] https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargets.inc ***/ // user_pref("privacy.fingerprintingProtection.overrides", ""); -/* 4003: disable remote FPP overrides [FF127+] ***/ +/* 4003: set granular FPP overrides + * JSON format: e.g."[{\"firstPartyDomain\": \"netflix.com\", \"overrides\": \"-CanvasRandomization,-FrameRate,\"}]" + * [NOTE] Not supported by arkenfox. Either use RFP or FPP at defaults ***/ + // user_pref("privacy.fingerprintingProtection.granularOverrides", ""); +/* 4004: disable remote FPP overrides [FF127+] ***/ // user_pref("privacy.fingerprintingProtection.remoteOverrides.enabled", false); -/*** [SECTION 4500]: RFP (resistFingerprinting) +/*** [SECTION 4500]: OPTIONAL RFP (resistFingerprinting) RFP overrides FPP (4000) - It is an all-or-nothing buy in: you cannot pick and choose what parts you want + FF128+ Arkenfox by default uses FPP (automatically enabled with ETP Strict). For most people + this is all you need. To use RFP instead, add RFP (4501) to your overrides, and optionally + add letterboxing (4504), spoof_english (4506), and webgl (4520). + + RFP is an all-or-nothing buy in: you cannot pick and choose what parts you want [TEST] https://arkenfox.github.io/TZP/tzp.html [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!"); ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable RFP - * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar. - * RFP also has a few side effects: mainly timezone is UTC, and websites will prefer light theme * [NOTE] pbmode applies if true and the original pref is false - * [1] https://bugzilla.mozilla.org/418986 ***/ -user_pref("privacy.resistFingerprinting", true); // [FF41+] + * [SETUP-WEB] RFP can cause some website breakage: mainly canvas, use a canvas site exception via the urlbar. + * RFP also has a few side effects: mainly that timezone is GMT, and websites will prefer light theme ***/ + // user_pref("privacy.resistFingerprinting", true); // [FF41+] // user_pref("privacy.resistFingerprinting.pbmode", true); // [FF114+] -/* 4502: set new window size rounding max values [FF55+] +/* 4502: set RFP new window size max rounded values [FF55+] * [SETUP-CHROME] sizes round down in hundreds: width to 200s and height to 100s, to fit your screen * [1] https://bugzilla.mozilla.org/1330882 ***/ user_pref("privacy.window.maxInnerWidth", 1600); @@ -815,7 +826,7 @@ user_pref("privacy.window.maxInnerHeight", 900); * [NOTE] To allow extensions to work on AMO, you also need 2662 * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); -/* 4504: enable RFP letterboxing [FF67+] +/* 4504: enable letterboxing [FF67+] * Dynamically resizes the inner window by applying margins in stepped ranges [2] * If you use the dimension pref, then it will only apply those resolutions. * The format is "width1xheight1, width2xheight2, ..." (e.g. "800x600, 1000x1000") @@ -824,14 +835,12 @@ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); * [WARNING] DO NOT USE: the dimension pref is only meant for testing * [1] https://bugzilla.mozilla.org/1407366 * [2] https://hg.mozilla.org/mozilla-central/rev/6d2d7856e468#l2.32 ***/ -user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] + // user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] // user_pref("privacy.resistFingerprinting.letterboxing.dimensions", ""); // [HIDDEN PREF] -/* 4505: experimental RFP [FF91+] - * [WARNING] DO NOT USE unless testing, see [1] comment 12 - * [1] https://bugzilla.mozilla.org/1635603 ***/ +/* 4505: disable RFP by domain [FF91+] ***/ // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); /* 4506: disable RFP spoof english prompt [FF59+] - * 0=prompt, 1=disabled, 2=enabled (requires RFP) + * 0=prompt, 1=disabled, 2=enabled * [NOTE] When changing from value 2, preferred languages ('intl.accept_languages') is not reset. * [SETUP-WEB] when enabled, sets 'en-US, en' for displaying pages and 'en-US' as locale. * [SETTING] General>Language>Choose your preferred language for displaying pages>Choose>Request English... ***/ @@ -839,12 +848,6 @@ user_pref("privacy.spoof_english", 1); /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] -/* 4511: enforce non-native widget theme - * Security: removes/reduces system API calls, e.g. win32k API [1] - * Fingerprinting: provides a uniform look and feel across platforms [2] - * [1] https://bugzilla.mozilla.org/1381938 - * [2] https://bugzilla.mozilla.org/1411425 ***/ -user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true] /* 4512: enforce links targeting new windows to open in a new tab instead * 1=most recent window or tab, 2=new window, 3=new tab * Stops malicious window sizes and some screen resolution leaks. @@ -856,9 +859,8 @@ user_pref("browser.link.open_newwindow", 3); // [DEFAULT: 3] /* 4513: set all open window methods to abide by "browser.link.open_newwindow" (4512) * [1] https://searchfox.org/mozilla-central/source/dom/tests/browser/browser_test_new_window_from_content.js ***/ user_pref("browser.link.open_newwindow.restriction", 0); -/* 4520: disable WebGL (Web Graphics Library) - * [SETUP-WEB] If you need it then override it. RFP still randomizes canvas for naive scripts ***/ -user_pref("webgl.disabled", true); +/* 4520: disable WebGL (Web Graphics Library) ***/ + // user_pref("webgl.disabled", true); /*** [SECTION 5000]: OPTIONAL OPSEC Disk avoidance, application data isolation, eyeballs... @@ -971,7 +973,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!"); * [2] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=asm.js * [3] https://rh0dev.github.io/blog/2017/the-return-of-the-jit/ ***/ // user_pref("javascript.options.asmjs", false); -/* 5505: disable Ion and baseline JIT to harden against JS exploits +/* 5505: disable Ion and baseline JIT to harden against JS exploits [RESTART] * [NOTE] When both Ion and JIT are disabled, and trustedprincipals * is enabled, then Ion can still be used by extensions (1599226) * [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!"); /* 5509: disable IPv6 if using a VPN * This is an application level fallback. Disabling IPv6 is best done at an OS/network * level, and/or configured properly in system wide VPN setups. - * [SETUP-WEB] PR_CONNECT_RESET_ERROR * [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT" + * [SETUP-WEB] PR_CONNECT_RESET_ERROR * [TEST] https://ipleak.org/ * [1] https://www.internetsociety.org/tag/ipv6-security/ (Myths 2,4,5,6) ***/ // user_pref("network.dns.disableIPv6", true); @@ -1047,6 +1049,9 @@ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] /* 6050: prefsCleaner: previously active items removed from arkenfox 115-127 ***/ // user_pref("accessibility.force_disabled", ""); // user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", ""); + // user_pref("geo.provider.network.url", ""); + // user_pref("geo.provider.network.logging.enabled", ""); + // user_pref("geo.provider.use_gpsd", ""); // user_pref("network.protocol-handler.external.ms-windows-store", ""); // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", ""); // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", ""); @@ -1261,6 +1266,17 @@ user_pref("browser.ping-centre.telemetry", false); // 9003: disable What's New toolbar icon [FF69+] // [-] https://bugzilla.mozilla.org/1724300 user_pref("browser.messaging-system.whatsNewPanel.enabled", false); +// FF127 + // 2630: disable content analysis by DLP (Data Loss Prevention) agents - replaced by default_result + // [-] https://bugzilla.mozilla.org/1880314 +user_pref("browser.contentanalysis.default_allow", false); +// 4511: enforce non-native widget theme + // Security: removes/reduces system API calls, e.g. win32k API [1] + // Fingerprinting: provides a uniform look and feel across platforms [2] + // [1] https://bugzilla.mozilla.org/1381938 + // [2] https://bugzilla.mozilla.org/1411425 + // [-] https://bugzilla.mozilla.org/1848899 +user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true] // ***/ /* END: internal custom pref to test for syntax errors ***/ From bc6a2ba1450cc03952c5a09c25dc3d900be51249 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:24:03 +0000 Subject: [PATCH 195/203] network.http.referer.hideOnionSource since it was flipped to true for TB, not much point keeping it --- scratchpad-scripts/arkenfox-cleanup.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 21e3438..9cb7411 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -71,6 +71,8 @@ 'security.ssl3.rsa_des_ede3_sha', // 93 /* REMOVED */ + /* 129-140 */ + 'network.http.referer.hideOnionSource', /* 116-128 */ 'browser.fixup.alternate.enabled', 'browser.taskbar.previews.enable', From c6cfa10c0b647dc87fe08027af3fc086f9df72b3 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:50:47 +0000 Subject: [PATCH 196/203] webchannel.allowObject.urlWhitelist --- scratchpad-scripts/arkenfox-cleanup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 9cb7411..3e074b0 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 6-August-2024 + Last updated: 7-November-2024 Instructions: - [optional] close Firefox and backup your profile @@ -35,6 +35,8 @@ const aPREFS = [ /* DEPRECATED */ + /* 129-140 */ + 'webchannel.allowObject.urlWhitelist', // 132 /* 116-128 */ 'browser.contentanalysis.default_allow', // 127 'browser.messaging-system.whatsNewPanel.enabled', // 126 From eae5762d29f18115fbffd73d89bd9e2510b25427 Mon Sep 17 00:00:00 2001 From: Mizuki Nguyen <49761211+MagicalDrizzle@users.noreply.github.com> Date: Sat, 9 Nov 2024 19:55:49 +0700 Subject: [PATCH 197/203] Add missing -command argument in powershell call (#1909) * updater: add missing PowerShell argument * prefcleaner: add missing PowerShell argument --- prefsCleaner.bat | 6 +++--- updater.bat | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/prefsCleaner.bat b/prefsCleaner.bat index 2e3403f..62ca5f0 100644 --- a/prefsCleaner.bat +++ b/prefsCleaner.bat @@ -3,7 +3,7 @@ TITLE prefs.js cleaner REM ### prefs.js cleaner for Windows REM ## author: @claustromaniac -REM ## version: 2.7 +REM ## version: 2.8 CD /D "%~dp0" @@ -15,7 +15,7 @@ ECHO: ECHO ######################################## ECHO #### prefs.js cleaner for Windows #### ECHO #### by claustromaniac #### -ECHO #### v2.7 #### +ECHO #### v2.8 #### ECHO ######################################## ECHO: CALL :message "This script should be run from your Firefox profile directory." @@ -37,7 +37,7 @@ CALL :strlenCheck CALL :FFcheck CALL :message "Backing up prefs.js..." -FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# +FOR /F "delims=" %%# IN ('powershell -command get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# COPY /B /V /Y prefs.js "prefs-backup-%ldt%.js" CALL :message "Cleaning prefs.js..." diff --git a/updater.bat b/updater.bat index f6174f7..bc1078a 100644 --- a/updater.bat +++ b/updater.bat @@ -3,7 +3,7 @@ TITLE arkenfox user.js updater REM ## arkenfox user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 4.19 +REM ## version: 4.20 REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows SET v=4.19 @@ -177,7 +177,7 @@ IF EXIST user.js.new ( IF DEFINED _singlebackup ( MOVE /Y user.js user.js.bak >nul ) ELSE ( - FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# + FOR /F "delims=" %%# IN ('powershell -command get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%# MOVE /Y user.js "user-backup-!ldt!.js" >nul ) REN user.js.new user.js From b8f18a3d91e01e44bde7879dd13325b43fab74ab Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:49:26 +0000 Subject: [PATCH 198/203] v133 (#1892) --- user.js | 54 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/user.js b/user.js index 1dbf7d2..96eba49 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 26 August 2024 -* version: 128 +* date: 13 January 2025 +* version: 133 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -312,10 +312,11 @@ user_pref("browser.urlbar.suggest.searches", false); user_pref("browser.urlbar.trending.featureGate", false); /* 0806: disable urlbar suggestions ***/ user_pref("browser.urlbar.addons.featureGate", false); // [FF115+] +user_pref("browser.urlbar.fakespot.featureGate", false); // [FF130+] [DEFAULT: false] user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF] user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false] user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] -user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] +user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] /* 0807: disable urlbar clipboard suggestions [FF118+] ***/ // user_pref("browser.urlbar.clipboard.featureGate", false); /* 0808: disable recent searches [FF120+] @@ -372,6 +373,9 @@ user_pref("network.auth.subresource-http-auth-allow", 1); * [SETTING] Privacy & Security>Logins and Passwords>Allow Windows single sign-on for... * [1] https://support.mozilla.org/kb/windows-sso ***/ // user_pref("network.http.windows-sso.enabled", false); // [DEFAULT: false] +/* 0907: enforce no automatic authentication on Microsoft sites [FF131+] [MAC] + * On macOS, SSO only works on corporate devices ***/ + // user_pref("network.http.microsoft-entra-sso.enabled", false); // [DEFAULT: false] /*** [SECTION 1000]: DISK AVOIDANCE ***/ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!"); @@ -379,7 +383,7 @@ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is m * [NOTE] We also clear cache on exit (2811) * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this ***/ user_pref("browser.cache.disk.enable", false); -/* 1002: disable media cache from writing to disk in Private Browsing +/* 1002: set media cache in Private Browsing to in-memory and increase its maximum size * [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB ***/ user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); // [FF75+] user_pref("media.memory_cache_max_size", 65536); @@ -564,8 +568,6 @@ user_pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false] /* 2616: remove special permissions for certain mozilla domains [FF35+] * [1] resource://app/defaults/permissions ***/ user_pref("permissions.manager.defaultsUrl", ""); -/* 2617: remove webchannel whitelist ***/ -user_pref("webchannel.allowObject.urlWhitelist", ""); /* 2619: use Punycode in Internationalized Domain Names to eliminate possible spoofing * [SETUP-WEB] Might be undesirable for non-latin alphabet users since legitimate IDN's are also punycoded * [TEST] https://www.xn--80ak6aa92e.com/ (www.apple.com) @@ -646,7 +648,7 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF] user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); /* 2810: enable Firefox to clear items on shutdown * [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811), or manually via site data (2820) and - * via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815) + * via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815) * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); @@ -728,6 +730,9 @@ user_pref("privacy.sanitize.timeSpan", 0); https://searchfox.org/mozilla-central/source/toolkit/components/resistfingerprinting/RFPTargetsDefault.inc + [NOTE] RFPTargets + granular overrides are somewhat experimental and may produce unexpected results + - e.g. FrameRate can only be controlled per process, not per origin + 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux) https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc 1858181 - subtly randomize canvas per eTLD+1, per session and per window-mode (FF120+) @@ -763,7 +768,6 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); [WARNING] DO NOT USE extensions to alter RFP protected metrics 418986 - limit window.screen & CSS media queries (FF41) - 1281949 - spoof screen orientation (FF50) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) FF56 1333651 - spoof User Agent & Navigator API @@ -790,7 +794,7 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); 1337157 - disable WebGL debug renderer info (FF60) 1459089 - disable OS locale in HTTP Accept-Language headers (ANDROID) (FF62) 1479239 - return "no-preference" with prefers-reduced-motion (FF63) - 1363508 - spoof/suppress Pointer Events (FF64) + 1363508 & 1826051 - spoof/suppress Pointer Events (FF64, FF132) 1492766 - spoof pointerEvent.pointerid (FF65) 1485266 - disable exposure of system colors to CSS or canvas (FF67) 1494034 - return "light" with prefers-color-scheme (FF67) @@ -806,9 +810,15 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102) 1422237 - return "srgb" with color-gamut (FF110) 1794628 - return "none" with inverted-colors (FF114) - 1554751 - return devicePixelRatio as 2 (previously FF41+ was 1) (FF127) 1787790 - normalize system fonts (FF128) 1835987 - spoof timezone as Atlantic/Reykjavik (previously FF55+ was UTC) (FF128) + 1834307 - always use smooth scrolling (FF132) + 1918202 - spoof screen orientation based on spoofed screen size and platform (FF132) + previously it always returned landscape-primary and an angle of 0 (FF50+) + 1390465 - load all subtitles in WebVTT (Video Text Tracks) (FF133) + 1873382 - make spoofed devicePixelRatio and CSS media queries match (FF133) + previously FF41+ devicePixelRatio was hardcoded as 1 and FF127+ as 2 + previously FF41+ CSS media queries were spoofed as zoom level at a devicePixelRatio of 1 ***/ user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs"); /* 4501: enable RFP @@ -834,10 +844,12 @@ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); * dislike the margins, then flip this pref, keeping in mind that it is effectively fingerprintable * [WARNING] DO NOT USE: the dimension pref is only meant for testing * [1] https://bugzilla.mozilla.org/1407366 - * [2] https://hg.mozilla.org/mozilla-central/rev/6d2d7856e468#l2.32 ***/ + * [2] https://hg.mozilla.org/mozilla-central/rev/7211cb4f58ff#l5.13 ***/ // user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF] // user_pref("privacy.resistFingerprinting.letterboxing.dimensions", ""); // [HIDDEN PREF] -/* 4505: disable RFP by domain [FF91+] ***/ +/* 4505: disable RFP by domain [FF91+] + * [NOTE] Working examples: "arkenfox.github.io", "*github.io" + * Non-working examples: "https://arkenfox.github.io", "github.io", "*arkenfox.github.io" ***/ // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); /* 4506: disable RFP spoof english prompt [FF59+] * 0=prompt, 1=disabled, 2=enabled @@ -848,6 +860,8 @@ user_pref("privacy.spoof_english", 1); /* 4510: disable using system colors * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS] +/* 4511: disable using system accent colors ***/ +user_pref("widget.non-native-theme.use-theme-accent", false); // [DEFAULT: false WINDOWS] /* 4512: enforce links targeting new windows to open in a new tab instead * 1=most recent window or tab, 2=new window, 3=new tab * Stops malicious window sizes and some screen resolution leaks. @@ -1096,10 +1110,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [WHY] Passive fingerprinting and perf costs. These are session-only * and isolated with network partitioning (FF85+) and/or containers ***/ // user_pref("security.ssl.disable_session_identifiers", true); -/* 7006: onions - * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ - // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 - // user_pref("network.http.referer.hideOnionSource", true); // 1305144 /* 7007: referers * [WHY] Only cross-origin referers (1602, 5510) matter ***/ // user_pref("network.http.sendRefererHeader", 2); @@ -1136,9 +1146,11 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies * [NOTE] FPP (fingerprintingProtection) is ignored when RFP (4501) is enabled * [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ // user_pref("network.cookie.cookieBehavior", 5); // [DEFAULT: 5] - // user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] + // user_pref("network.cookie.cookieBehavior.optInPartitioning", true); // [ETP FF132+] // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true); // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] + // user_pref("privacy.bounceTrackingProtection.mode", 1); // [FF131+] [ETP FF133+] + // user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] // user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true FF123+] // user_pref("privacy.query_stripping.enabled", true); // [FF101+] // user_pref("privacy.trackingprotection.enabled", true); @@ -1279,5 +1291,13 @@ user_pref("browser.contentanalysis.default_allow", false); user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true] // ***/ +/* ESR128.x still uses all the following prefs +// [NOTE] replace the * with a slash in the line above to re-enable active ones +// FF132 +/* 2617: remove webchannel whitelist + // [-] https://bugzilla.mozilla.org/1275612 + // user_pref("webchannel.allowObject.urlWhitelist", ""); +// ***/ + /* END: internal custom pref to test for syntax errors ***/ user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!"); From 80fa110f499d3d3f6763ea5db0f015e1a3bc3ad4 Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Jan 2025 19:01:32 +0000 Subject: [PATCH 199/203] dom.securecontext.allowlist_onions --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 3e074b0..8153642 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 7-November-2024 + Last updated: 13-January-2024 Instructions: - [optional] close Firefox and backup your profile @@ -74,6 +74,7 @@ /* REMOVED */ /* 129-140 */ + 'dom.securecontext.allowlist_onions', 'network.http.referer.hideOnionSource', /* 116-128 */ 'browser.fixup.alternate.enabled', From c25187332e19c633b956a6755a7971a6591d3e8d Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Sun, 12 Jan 2025 19:02:07 +0000 Subject: [PATCH 200/203] fix the year --- scratchpad-scripts/arkenfox-cleanup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 8153642..34d1ba5 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 13-January-2024 + Last updated: 13-January-2025 Instructions: - [optional] close Firefox and backup your profile From 9bba5788aa07f67b37abc025782113a43c717b7f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Wed, 5 Mar 2025 07:21:39 +0000 Subject: [PATCH 201/203] legacy sanitizing prefs In FF128 these were used to migrate to - clearOnShutdown to clearOnShutdown_v2 - cpd to clearHistory They are then no longer used. The migration can be checked with - privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2 - privacy.sanitize.cpd.hasMigratedToNewPrefs2 Note: in FF136 there was another migration, where it changes the `ToNewPrefs2` to false - privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3 - privacy.sanitize.cpd.hasMigratedToNewPrefs3 AFAICT, cpd.hasMigrated* doesn't migrate until you open the clear history dialog. --- scratchpad-scripts/arkenfox-cleanup.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 34d1ba5..58a0e1f 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 13-January-2025 + Last updated: 5-March-2025 Instructions: - [optional] close Firefox and backup your profile @@ -76,6 +76,19 @@ /* 129-140 */ 'dom.securecontext.allowlist_onions', 'network.http.referer.hideOnionSource', + 'privacy.clearOnShutdown.cache', + 'privacy.clearOnShutdown.cookies', + 'privacy.clearOnShutdown.downloads', + 'privacy.clearOnShutdown.formdata', + 'privacy.clearOnShutdown.history', + 'privacy.clearOnShutdown.offlineApps', + 'privacy.clearOnShutdown.sessions', + 'privacy.cpd.cache', + 'privacy.cpd.cookies', + 'privacy.cpd.formdata', + 'privacy.cpd.history', + 'privacy.cpd.offlineApps', + 'privacy.cpd.sessions', /* 116-128 */ 'browser.fixup.alternate.enabled', 'browser.taskbar.previews.enable', From 3d76c74c80485931425464fec0e59d6cb461677a Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Thu, 6 Mar 2025 02:52:08 +0000 Subject: [PATCH 202/203] v135 (#1929) --- user.js | 290 +++++++++++++++++++++++--------------------------------- 1 file changed, 118 insertions(+), 172 deletions(-) diff --git a/user.js b/user.js index 96eba49..08c51ca 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ /****** * name: arkenfox user.js -* date: 13 January 2025 -* version: 133 +* date: 6 March 2025 +* version: 135 * urls: https://github.com/arkenfox/user.js [repo] * : https://arkenfox.github.io/gui/ [interactive] * license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt @@ -63,6 +63,7 @@ 6000: DON'T TOUCH 7000: DON'T BOTHER 8000: DON'T BOTHER: FINGERPRINTING + 8500: TELEMETRY 9000: NON-PROJECT RELATED 9999: DEPRECATED / RENAMED @@ -82,7 +83,7 @@ user_pref("browser.aboutConfig.showWarning", false); user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!"); /* 0102: set startup page [SETUP-CHROME] * 0=blank, 1=home, 2=last visited page, 3=resume previous session - * [NOTE] Session Restore is cleared with history (2811), and not used in Private Browsing mode + * [NOTE] Session Restore is cleared with history (2811+), and not used in Private Browsing mode * [SETTING] General>Startup>Restore previous session ***/ user_pref("browser.startup.page", 0); /* 0103: set HOME+NEWWINDOW page @@ -116,8 +117,8 @@ user_pref("extensions.getAddons.showPane", false); // [HIDDEN PREF] /* 0321: disable recommendations in about:addons' Extensions and Themes panes [FF68+] ***/ user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); /* 0322: disable personalized Extension Recommendations in about:addons and AMO [FF65+] - * [NOTE] This pref has no effect when Health Reports (0331) are disabled - * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to make personalized extension recommendations + * [NOTE] This pref has no effect when Health Reports (8501) are disabled + * [SETTING] Privacy & Security>Firefox Data Collection and Use>Allow personalized extension recommendations * [1] https://support.mozilla.org/kb/personalized-extension-recommendations ***/ user_pref("browser.discovery.enabled", false); /* 0323: disable shopping experience [FF116+] @@ -125,41 +126,13 @@ user_pref("browser.discovery.enabled", false); user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false] /** TELEMETRY ***/ -/* 0330: disable new data submission [FF41+] - * If disabled, no policy is shown or upload takes place, ever - * [1] https://bugzilla.mozilla.org/1195552 ***/ -user_pref("datareporting.policy.dataSubmissionEnabled", false); -/* 0331: disable Health Reports - * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send technical... data ***/ -user_pref("datareporting.healthreport.uploadEnabled", false); -/* 0332: disable telemetry - * The "unified" pref affects the behavior of the "enabled" pref - * - If "unified" is false then "enabled" controls the telemetry module - * - If "unified" is true then "enabled" only controls whether to record extended data - * [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2] - * [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html - * [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/ -user_pref("toolkit.telemetry.unified", false); -user_pref("toolkit.telemetry.enabled", false); // see [NOTE] -user_pref("toolkit.telemetry.server", "data:,"); -user_pref("toolkit.telemetry.archive.enabled", false); -user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+] -user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+] -user_pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+] -user_pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter -user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+] -/* 0333: disable Telemetry Coverage - * [1] https://blog.mozilla.org/data/2018/08/20/effectively-measuring-search-in-firefox/ ***/ -user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF] -user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF] -user_pref("toolkit.coverage.endpoint.base", ""); /* 0335: disable Firefox Home (Activity Stream) telemetry ***/ user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); user_pref("browser.newtabpage.activity-stream.telemetry", false); /** STUDIES ***/ /* 0340: disable Studies - * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to install and run studies ***/ + * [SETTING] Privacy & Security>Firefox Data Collection and Use>Install and run studies ***/ user_pref("app.shield.optoutstudies.enabled", false); /* 0341: disable Normandy/Shield [FF60+] * Shield is a telemetry system that can push and test "recipes" @@ -173,7 +146,7 @@ user_pref("breakpad.reportURL", ""); user_pref("browser.tabs.crashReporting.sendReport", false); // [FF44+] // user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // [FF51+] [DEFAULT: false] /* 0351: enforce no submission of backlogged Crash Reports [FF58+] - * [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports ***/ + * [SETTING] Privacy & Security>Firefox Data Collection and Use>Send backlogged crash reports ***/ user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false] /** OTHER ***/ @@ -261,7 +234,7 @@ user_pref("network.file.disable_unc_paths", true); // [HIDDEN PREF] * [1] https://bugzilla.mozilla.org/1433507 * [2] https://en.wikipedia.org/wiki/GVfs * [3] https://en.wikipedia.org/wiki/GIO_(software) ***/ -user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: "" FF118+] +user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: ""] /* 0705: disable proxy direct failover for system requests [FF91+] * [WARNING] Default true is a security feature against malicious extensions [1] * [SETUP-CHROME] If you use a proxy and you trust your extensions @@ -320,11 +293,11 @@ user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] /* 0807: disable urlbar clipboard suggestions [FF118+] ***/ // user_pref("browser.urlbar.clipboard.featureGate", false); /* 0808: disable recent searches [FF120+] - * [NOTE] Recent searches are cleared with history (2811) + * [NOTE] Recent searches are cleared with history (2811+) * [1] https://support.mozilla.org/kb/search-suggestions-firefox ***/ // user_pref("browser.urlbar.recentsearches.featureGate", false); /* 0810: disable search and form history - * [NOTE] We also clear formdata on exit (2811) + * [NOTE] We also clear formdata on exit (2811+) * [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2] * [SETTING] Privacy & Security>History>Custom Settings>Remember search and form history * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html @@ -337,7 +310,7 @@ user_pref("browser.formfill.enable", false); /* 0820: disable coloring of visited links * [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive * redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing - * attacks. Don't forget clearing history on exit (2811). However, social engineering [2#limits][4][5] + * attacks. Don't forget clearing history on exit (2811+). However, social engineering [2#limits][4][5] * and advanced targeted timing attacks could still produce usable results * [1] https://developer.mozilla.org/docs/Web/CSS/Privacy_and_the_:visited_selector * [2] https://dbaron.org/mozilla/visited-privacy @@ -380,7 +353,7 @@ user_pref("network.auth.subresource-http-auth-allow", 1); /*** [SECTION 1000]: DISK AVOIDANCE ***/ user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!"); /* 1001: disable disk cache - * [NOTE] We also clear cache on exit (2811) + * [NOTE] We also clear cache on exit (2811+) * [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this ***/ user_pref("browser.cache.disk.enable", false); /* 1002: set media cache in Private Browsing to in-memory and increase its maximum size @@ -442,13 +415,14 @@ user_pref("security.tls.enable_0rtt_data", false); * [1] https://en.wikipedia.org/wiki/Ocsp ***/ user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1] /* 1212: set OCSP fetch failures (non-stapled, see 1211) to hard-fail - * [SETUP-WEB] SEC_ERROR_OCSP_SERVER_ERROR + * [SETUP-WEB] SEC_ERROR_OCSP_SERVER_ERROR | SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST * When a CA cannot be reached to validate a cert, Firefox just continues the connection (=soft-fail) * Setting this pref to true tells Firefox to instead terminate the connection (=hard-fail) * It is pointless to soft-fail when an OCSP fetch fails: you cannot confirm a cert is still valid (it * could have been revoked) and/or you could be under attack (e.g. malicious blocking of OCSP servers) * [1] https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/ - * [2] https://www.imperialviolet.org/2014/04/19/revchecking.html ***/ + * [2] https://www.imperialviolet.org/2014/04/19/revchecking.html + * [3] https://letsencrypt.org/2024/12/05/ending-ocsp/ ***/ user_pref("security.OCSP.require", true); /** CERTS / HPKP (HTTP Public Key Pinning) ***/ @@ -463,7 +437,7 @@ user_pref("security.cert_pinning.enforcement_level", 2); * 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (default) * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071 * [2] https://blog.mozilla.org/security/tag/crlite/ ***/ -user_pref("security.remote_settings.crlite_filters.enabled", true); +user_pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+] user_pref("security.pki.crlite_mode", 2); /** MIXED CONTENT ***/ @@ -647,41 +621,33 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF] /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/ user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); /* 2810: enable Firefox to clear items on shutdown - * [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811), or manually via site data (2820) and + * [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811+), or manually via site data (2820+) and * via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815) * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/ user_pref("privacy.sanitize.sanitizeOnShutdown", true); -/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS | v2 migration is FF128+ ***/ -/* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * [NOTE] If "history" is true, downloads will also be cleared ***/ -user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown_v2.cache", true); // [FF128+] [DEFAULT: true] -user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] -user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [FF128+] [DEFAULT: true] - // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false] - // user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [FF128+] [DEFAULT: false] -/* 2812: set Session Restore to clear on shutdown (if 2810 is true) [FF34+] - * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811) +/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS ***/ +/* 2811: set/enforce clearOnShutdown items (if 2810 is true) [SETUP-CHROME] [FF128+] ***/ +user_pref("privacy.clearOnShutdown_v2.cache", true); // [DEFAULT: true] +user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [DEFAULT: true] + // user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [DEFAULT: false] +/* 2812: set/enforce clearOnShutdown items [FF136+] ***/ +user_pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); // [DEFAULT: true] +user_pref("privacy.clearOnShutdown_v2.downloads", true); +user_pref("privacy.clearOnShutdown_v2.formdata", true); +/* 2813: set Session Restore to clear on shutdown (if 2810 is true) [FF34+] + * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811+) * [NOTE] If true, this prevents resuming from crashes (also see 5008) ***/ // user_pref("privacy.clearOnShutdown.openWindows", true); -/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ | v2 migration is FF128+ ***/ -/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] - * [NOTE] Exceptions: A "cookie" permission also controls "offlineApps" (see note below). For cross-domain logins, - * add exceptions for both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) - * [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache) - * [NOTE] "sessions": Active Logins (has no site exceptions): refers to HTTP Basic Authentication [1], not logins via cookies +/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS ***/ +/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] [FF128+] + * [NOTE] Exceptions: For cross-domain logins, add exceptions for both sites + * e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on) * [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271) * [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question) - * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings - * [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/ -user_pref("privacy.clearOnShutdown.cookies", true); // Cookies -user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data -user_pref("privacy.clearOnShutdown.sessions", true); // Active Logins [DEFAULT: true] -user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true); // Cookies, Site Data, Active Logins [FF128+] + * [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/ +user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true); /** SANITIZE SITE DATA: IGNORES "ALLOW" SITE EXCEPTIONS ***/ /* 2820: set manual "Clear Data" items [SETUP-CHROME] [FF128+] @@ -691,30 +657,24 @@ user_pref("privacy.clearSiteData.cache", true); user_pref("privacy.clearSiteData.cookiesAndStorage", false); // keep false until it respects "allow" site exceptions user_pref("privacy.clearSiteData.historyFormDataAndDownloads", true); // user_pref("privacy.clearSiteData.siteSettings", false); +/* 2821: set manual "Clear Data" items [FF136+] ***/ +user_pref("privacy.clearSiteData.browsingHistoryAndDownloads", true); +user_pref("privacy.clearSiteData.formdata", true); -/** SANITIZE HISTORY: IGNORES "ALLOW" SITE EXCEPTIONS | clearHistory migration is FF128+ ***/ -/* 2830: set manual "Clear History" items, also via Ctrl-Shift-Del [SETUP-CHROME] +/** SANITIZE HISTORY: IGNORES "ALLOW" SITE EXCEPTIONS ***/ +/* 2830: set manual "Clear History" items, also via Ctrl-Shift-Del [SETUP-CHROME] [FF128+] * Firefox remembers your last choices. This will reset them when you start Firefox - * [NOTE] Regardless of what you set "downloads" to, as soon as the dialog - * for "Clear Recent History" is opened, it is synced to the same as "history" * [SETTING] Privacy & Security>History>Custom Settings>Clear History ***/ -user_pref("privacy.cpd.cache", true); // [DEFAULT: true] -user_pref("privacy.clearHistory.cache", true); -user_pref("privacy.cpd.formdata", true); // [DEFAULT: true] -user_pref("privacy.cpd.history", true); // [DEFAULT: true] - // user_pref("privacy.cpd.downloads", true); // not used, see note above -user_pref("privacy.clearHistory.historyFormDataAndDownloads", true); -user_pref("privacy.cpd.cookies", false); -user_pref("privacy.cpd.sessions", true); // [DEFAULT: true] -user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] +user_pref("privacy.clearHistory.cache", true); // [DEFAULT: true] user_pref("privacy.clearHistory.cookiesAndStorage", false); - // user_pref("privacy.cpd.openWindows", false); // Session Restore - // user_pref("privacy.cpd.passwords", false); - // user_pref("privacy.cpd.siteSettings", false); - // user_pref("privacy.clearHistory.siteSettings", false); +user_pref("privacy.clearHistory.historyFormDataAndDownloads", true); // [DEFAULT: true] + // user_pref("privacy.clearHistory.siteSettings", false); // [DEFAULT: false] +/* 2831: set manual "Clear History" items [FF136+] ***/ +user_pref("privacy.clearHistory.browsingHistoryAndDownloads", true); // [DEFAULT: true] +user_pref("privacy.clearHistory.formdata", true); /** SANITIZE MANUAL: TIMERANGE ***/ -/* 2840: set "Time range to clear" for "Clear Data" (2820) and "Clear History" (2830) +/* 2840: set "Time range to clear" for "Clear Data" (2820+) and "Clear History" (2830+) * Firefox remembers your last choice. This will reset the value when you start Firefox * 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today * [NOTE] Values 5 (last 5 minutes) and 6 (last 24 hours) are not listed in the dropdown, @@ -740,7 +700,7 @@ user_pref("privacy.sanitize.timeSpan", 0); user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); /* 4001: enable FPP in PB mode [FF114+] * [NOTE] In FF119+, FPP for all modes (7016) is enabled with ETP Strict (2701) ***/ - // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+] + // user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true] /* 4002: set global FPP overrides [FF114+] * uses "RFPTargets" [1] which despite the name these are not used by RFP * e.g. "+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC" = all targets but allow prefers-color-scheme and do not change timezone @@ -763,7 +723,6 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); add letterboxing (4504), spoof_english (4506), and webgl (4520). RFP is an all-or-nothing buy in: you cannot pick and choose what parts you want - [TEST] https://arkenfox.github.io/TZP/tzp.html [WARNING] DO NOT USE extensions to alter RFP protected metrics @@ -771,8 +730,8 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!"); 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) FF56 1333651 - spoof User Agent & Navigator API - version: android version spoofed as ESR (FF119 or lower) - OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android + JS: spoofed as Windows 10, OS 10.15, Android 10, or Linux + HTTP Header: spoofed as Windows 10 or Android 10.15 until FF136 then matches JS spoof 1369319 - disable device sensor API 1369357 - disable site specific zoom 1337161 - hide gamepads from content @@ -867,7 +826,6 @@ user_pref("widget.non-native-theme.use-theme-accent", false); // [DEFAULT: false * Stops malicious window sizes and some screen resolution leaks. * You can still right-click a link and open in a new window * [SETTING] General>Tabs>Open links in tabs instead of new windows - * [TEST] https://arkenfox.github.io/TZP/tzp.html#screen * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/9881 ***/ user_pref("browser.link.open_newwindow", 3); // [DEFAULT: 3] /* 4513: set all open window methods to abide by "browser.link.open_newwindow" (4512) @@ -935,7 +893,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow * [1] https://support.mozilla.org/kb/address-bar-autocomplete-firefox#w_url-autocomplete ***/ // user_pref("browser.urlbar.autoFill", false); /* 5013: disable browsing and download history - * [NOTE] We also clear history and downloads on exit (2811) + * [NOTE] We also clear history and downloads on exit (2811+) * [SETTING] Privacy & Security>History>Custom Settings>Remember browsing and download history ***/ // user_pref("places.history.enabled", false); /* 5014: disable Windows jumplist [WINDOWS] ***/ @@ -1060,16 +1018,20 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] /* 6012: enforce Quarantined Domains [FF115+] * [WHY] https://support.mozilla.org/kb/quarantined-domains */ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true] -/* 6050: prefsCleaner: previously active items removed from arkenfox 115-127 ***/ - // user_pref("accessibility.force_disabled", ""); - // user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", ""); - // user_pref("geo.provider.network.url", ""); - // user_pref("geo.provider.network.logging.enabled", ""); - // user_pref("geo.provider.use_gpsd", ""); - // user_pref("network.protocol-handler.external.ms-windows-store", ""); - // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", ""); - // user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", ""); - // user_pref("privacy.partition.serviceWorkers", ""); +/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF128+ ***/ + // user_pref("privacy.clearOnShutdown.cache", ""); + // user_pref("privacy.clearOnShutdown.cookies", ""); + // user_pref("privacy.clearOnShutdown.downloads", ""); + // user_pref("privacy.clearOnShutdown.formdata", ""); + // user_pref("privacy.clearOnShutdown.history", ""); + // user_pref("privacy.clearOnShutdown.offlineApps", ""); + // user_pref("privacy.clearOnShutdown.sessions", ""); + // user_pref("privacy.cpd.cache", ""); + // user_pref("privacy.cpd.cookies", ""); + // user_pref("privacy.cpd.formdata", ""); + // user_pref("privacy.cpd.history", ""); + // user_pref("privacy.cpd.offlineApps", ""); + // user_pref("privacy.cpd.sessions", ""); /*** [SECTION 7000]: DON'T BOTHER ***/ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); @@ -1151,7 +1113,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies // user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // user_pref("privacy.bounceTrackingProtection.mode", 1); // [FF131+] [ETP FF133+] // user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] - // user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true FF123+] + // user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true] // user_pref("privacy.query_stripping.enabled", true); // [FF101+] // user_pref("privacy.trackingprotection.enabled", true); // user_pref("privacy.trackingprotection.socialtracking.enabled", true); @@ -1210,6 +1172,58 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan // user_pref("ui.use_standins_for_native_colors", ""); // user_pref("webgl.enable-debug-renderer-info", ""); +/*** [SECTION 8500]: TELEMETRY + Arkenfox does not consider Firefox telemetry to be a privacy or security concern - comments below. + But since most arkenfox users prefer it disabled, we'll do that rather than cause overrides. + + Opt-out + - Telemetry is essential: a browser engine is a _very_ large complex beast costing billions to maintain + - Opt-in telemetry _does not_ work and results in data that is unrepresentative and may be misleading + Choice + - Every new profile on first use provides data collection/use policy and the abillty to opt-out + - It can be disabled at any time (Settings>Privacy & Security>Data Collection and Use) + Data + - no PII (Personally Identifiable Information) + - can be viewed in about:telemetry + - uses Prio [1][2][3], Glean [4], Oblivious HTTP [5][6] + + [1] https://crypto.stanford.edu/prio/ + [2] https://hacks.mozilla.org/2018/10/testing-privacy-preserving-telemetry-with-prio/ + [3] https://blog.mozilla.org/security/2019/06/06/next-steps-in-privacy-preserving-telemetry-with-prio/ + [4] https://firefox-source-docs.mozilla.org/toolkit/components/glean/index.html + [5] https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/ohttp.html + [6] https://blog.mozilla.org/en/tag/oblivious-http/ +***/ +user_pref("_user.js.parrot", "8500 syntax error: the parrot's off the twig!"); +/* 8500: disable new data submission [FF41+] + * If disabled, no policy is shown or upload takes place, ever + * [1] https://bugzilla.mozilla.org/1195552 ***/ +user_pref("datareporting.policy.dataSubmissionEnabled", false); +/* 8501: disable Health Reports + * [SETTING] Privacy & Security>Firefox Data Collection and Use>Send technical... data ***/ +user_pref("datareporting.healthreport.uploadEnabled", false); +/* 0802: disable telemetry + * The "unified" pref affects the behavior of the "enabled" pref + * - If "unified" is false then "enabled" controls the telemetry module + * - If "unified" is true then "enabled" only controls whether to record extended data + * [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2] + * [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html + * [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/ +user_pref("toolkit.telemetry.unified", false); +user_pref("toolkit.telemetry.enabled", false); // see [NOTE] +user_pref("toolkit.telemetry.server", "data:,"); +user_pref("toolkit.telemetry.archive.enabled", false); +user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+] +user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+] +user_pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+] +user_pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter +user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+] +/* 8503: disable Telemetry Coverage + * [1] https://blog.mozilla.org/data/2018/08/20/effectively-measuring-search-in-firefox/ ***/ +user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF] +user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF] +user_pref("toolkit.coverage.endpoint.base", ""); + /*** [SECTION 9000]: NON-PROJECT RELATED ***/ user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!"); /* 9001: disable welcome notices ***/ @@ -1223,74 +1237,6 @@ user_pref("browser.urlbar.showSearchTerms.enabled", false); /*** [SECTION 9999]: DEPRECATED / RENAMED ***/ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!"); -/* ESR115.x still uses all the following prefs -// [NOTE] replace the * with a slash in the line above to re-enable active ones -// FF116 -// 4506: set RFP's font visibility level (1402) [FF94+] - // [-] https://bugzilla.mozilla.org/1838415 - // user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1] -// FF117 -// 1221: disable Windows Microsoft Family Safety cert [FF50+] [WINDOWS] - // 0=disable detecting Family Safety mode and importing the root - // 1=only attempt to detect Family Safety mode (don't import the root) - // 2=detect Family Safety mode and import the root - // [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 - // [-] https://bugzilla.mozilla.org/1844908 -user_pref("security.family_safety.mode", 0); -// 7018: disable service worker Web Notifications [FF44+] - // [WHY] Web Notifications are behind a prompt (7002) - // [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/ - // [-] https://bugzilla.mozilla.org/1842457 - // user_pref("dom.webnotifications.serviceworker.enabled", false); -// FF118 -// 1402: limit font visibility (Windows, Mac, some Linux) [FF94+] - // Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed - // In normal windows: uses the first applicable: RFP over TP over Standard - // In Private Browsing windows: uses the most restrictive between normal and private - // 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts - // [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc - // [-] https://bugzilla.mozilla.org/1847599 - // user_pref("layout.css.font-visibility.private", 1); - // user_pref("layout.css.font-visibility.standard", 1); - // user_pref("layout.css.font-visibility.trackingprotection", 1); -// 2623: disable permissions delegation [FF73+] - // Currently applies to cross-origin geolocation, camera, mic and screen-sharing - // permissions, and fullscreen requests. Disabling delegation means any prompts - // for these will show/use their correct 3rd party origin - // [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion - // [-] https://bugzilla.mozilla.org/1697151 - // user_pref("permissions.delegation.enabled", false); -// FF119 -// 0211: use en-US locale regardless of the system or region locale - // [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1] - // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 - // [-] https://bugzilla.mozilla.org/1846224 - // user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] -// 0711: disable skipping DoH when parental controls are enabled [FF70+] - // [-] https://bugzilla.mozilla.org/1586941 -user_pref("network.dns.skipTRR-when-parental-control-enabled", false); -// FF123 -// 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+] - // Defense-in-depth: currently covered by 0331 - // [-] https://bugzilla.mozilla.org/1868988 -user_pref("browser.ping-centre.telemetry", false); -// FF126 -// 9003: disable What's New toolbar icon [FF69+] - // [-] https://bugzilla.mozilla.org/1724300 -user_pref("browser.messaging-system.whatsNewPanel.enabled", false); -// FF127 - // 2630: disable content analysis by DLP (Data Loss Prevention) agents - replaced by default_result - // [-] https://bugzilla.mozilla.org/1880314 -user_pref("browser.contentanalysis.default_allow", false); -// 4511: enforce non-native widget theme - // Security: removes/reduces system API calls, e.g. win32k API [1] - // Fingerprinting: provides a uniform look and feel across platforms [2] - // [1] https://bugzilla.mozilla.org/1381938 - // [2] https://bugzilla.mozilla.org/1411425 - // [-] https://bugzilla.mozilla.org/1848899 -user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true] -// ***/ - /* ESR128.x still uses all the following prefs // [NOTE] replace the * with a slash in the line above to re-enable active ones // FF132 From 7f852e94fc80fd0aa19f1c948319974e3301187f Mon Sep 17 00:00:00 2001 From: Thorin-Oakenpants <Thorin-Oakenpants@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:04:04 +0000 Subject: [PATCH 203/203] media.ondevicechange.enabled --- scratchpad-scripts/arkenfox-cleanup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scratchpad-scripts/arkenfox-cleanup.js b/scratchpad-scripts/arkenfox-cleanup.js index 58a0e1f..3434fc7 100644 --- a/scratchpad-scripts/arkenfox-cleanup.js +++ b/scratchpad-scripts/arkenfox-cleanup.js @@ -6,7 +6,7 @@ There is an archived version at https://github.com/arkenfox/user.js/issues/123 if you want the full list since jesus - Last updated: 5-March-2025 + Last updated: 21-April-2025 Instructions: - [optional] close Firefox and backup your profile @@ -36,6 +36,7 @@ const aPREFS = [ /* DEPRECATED */ /* 129-140 */ + 'media.ondevicechange.enabled', // 137 'webchannel.allowObject.urlWhitelist', // 132 /* 116-128 */ 'browser.contentanalysis.default_allow', // 127