Compare commits

..

63 Commits
102.0 ... 115.0

Author SHA1 Message Date
4d78abf2bf v115 (#1680) 2023-07-26 04:37:00 +00:00
6151d664ac middlemouse.contentLoadURL 2023-07-19 20:38:31 +00:00
47f152ac90 browser.cache.offline.enable 2023-07-10 13:35:52 +00:00
84d515abfc extensions.formautofill.heuristics.enabled 2023-07-10 12:44:53 +00:00
c34531b67e 114 deprecated 2023-06-21 03:29:51 +00:00
04e6e77439 v3.9 - fix #1670 2023-05-05 10:56:08 +00:00
bc5add9450 v112 (#1654) 2023-05-04 23:31:33 +00:00
b117916207 Update prefsCleaner.sh 2023-04-24 16:58:19 +00:00
2f4b93a18f fix escape character, should close #1667 (#1668) 2023-04-24 16:56:29 +00:00
d50c772d7d v1.8 - fix syntax error 2023-04-23 09:14:03 +00:00
7a1d0a92af v3.7 - fix syntax error 2023-04-23 09:13:13 +00:00
f2e4a79ca0 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>
2023-04-22 11:52:26 +00:00
c84c419544 v111 (#1650) 2023-03-30 04:50:25 +00:00
bdaa2867b9 v2.7 - use Powershell for locale-independent TS
fixes #1624
2023-03-19 11:16:40 +00:00
e2e8c4ea8f add arkenfox/gui 2023-03-13 07:13:07 +00:00
d13f39d9f9 v110 (#1629) 2023-03-12 03:26:12 +00:00
ca022d8c2d v4.19 - use Powershell for locale-independent TS 2023-03-10 09:21:21 +00:00
7388485063 v109 (#1614) 2023-02-07 00:02:45 +00:00
8259191167 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>
2023-02-05 14:06:49 +00:00
b99dd27de8 browser.startup.blankWindow, #1618 2023-01-27 01:07:25 +00:00
62a68f0814 v108 (#1613)
nit: add a ';' to the end of line 1040
2023-01-08 16:48:25 +00:00
be376afc1e v108 (#1606) 2023-01-08 15:20:22 +00:00
f5e54b4a70 revert security.tls.version.enable-deprecated
we kept it in the user js
2023-01-02 17:15:24 +00:00
7135907b2f Update prefsCleaner.sh 2022-12-10 14:35:48 +00:00
12ca83b550 v1.6 - autoupdate 2022-12-10 14:00:23 +00:00
e4a85c30c1 security.tls.version.enable-deprecated
the UI for downgrading was removed in FF94, default is false
2022-12-05 18:48:51 +00:00
45d23f8d75 region prefs, #1590 2022-12-02 10:19:29 +00:00
40e8e1acbe beacon.enabled, see #1586 2022-11-28 08:11:40 +00:00
6789dc7fef fix typo 2022-11-22 19:50:50 +00:00
5eaa8196e2 v4.18 - fix backup filename 2022-11-22 19:00:47 +00:00
cc0f05388f v107 (#1579) 2022-11-21 00:36:37 +00:00
5a366493e0 dom.disable_open_during_load
default true since at least FF60
2022-11-19 04:04:59 +00:00
365e76bc9f 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>
2022-11-13 14:37:26 +00:00
a93047e6c9 Improves usability by clarifying desired action (#1583) 2022-11-13 14:31:17 +00:00
8a65c5a7ba v106 (#1558) 2022-11-06 13:28:40 +00:00
60dd839081 dom.disable_beforeunload, #1575 2022-11-04 16:03:29 +00:00
f4187632fa browser.ssl_override_behavior
the code behind it was removed in FF68 - https://bugzilla.mozilla.org/show_bug.cgi?id=1530348
2022-10-08 19:38:05 +00:00
51f3fdbd87 devtools.chrome.enabled
default false in stable, dev, beta, nightly
2022-10-08 14:08:55 +00:00
db04bc44f2 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+
2022-10-04 17:34:45 +00:00
4e3a64b5a1 v105 (#1541) 2022-10-04 17:15:19 +00:00
958acf9c2e activity-stream.feeds.discoverystreamfeed 2022-10-03 13:47:30 +00:00
95ecd3e328 browser.newtab.preload 2022-10-03 07:18:30 +00:00
4bc98005ec activity-stream.feeds.snippets 2022-10-01 20:33:58 +00:00
3f09afdee0 Merge pull request #1527 from arkenfox/Thorin-Oakenpants-patch-1
v104
2022-09-11 12:46:23 +02:00
3c73bc1e56 2720: add APS 2022-09-11 02:39:08 +00:00
e38f02bc22 add extra bugzilla 2022-08-28 00:31:59 +00:00
74be763f60 add OCSP hard-fail error code 2022-08-24 05:53:46 +00:00
5780b6d197 move Form Autofill to 5000s 2022-08-23 17:51:35 +00:00
06bfef8fd1 extensions.formautofill
add migrated prefs for completeness - see comment in d040b95ed2
2022-08-23 17:33:55 +00:00
d040b95ed2 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)
2022-08-23 17:29:47 +00:00
61f01f81fd tidy 2022-08-23 16:53:27 +00:00
2b2e151f45 extensions.formautofill
https://bugzilla.mozilla.org/1745248 - migrated to .supported in FF99
2022-08-23 16:52:38 +00:00
ff8d63f7e4 remove dead prefs
https://bugzilla.mozilla.org/show_bug.cgi?id=1745248 - they migrated to `.supported` prefs (values detect or off)
2022-08-23 16:42:32 +00:00
848290898d svg opentype fonts -> optional, see #1529 2022-08-22 16:02:07 +00:00
05abe82136 v105
partition SWers by default: https://bugzilla.mozilla.org/show_bug.cgi?id=1784900
2022-08-18 20:12:42 +00:00
0dba33688f v103 (#1508) 2022-08-17 19:24:38 +00:00
6e53e841f7 security.pki.sha1_enforcement_level 2022-07-31 10:50:24 +00:00
ecb63e82c9 Update prefsCleaner.sh 2022-07-30 12:23:27 +00:00
ded7c01a08 Back up prefs.js to prefsjs_backups directory (#1514) 2022-07-30 12:22:32 +00:00
996881aef1 Update updater.sh 2022-07-24 13:11:28 +00:00
4b4248157a make updater.sh check explicitly for Y/y instead of N/n (#1511)
thanks @infinitewarp
2022-07-24 13:10:06 +00:00
a5e75c4bd3 fixup network.cookie.lifetimePolicy
migration code was backed out in FF102.1
2022-07-18 11:27:05 +00:00
c6ab6c4b48 v102.1 (#1507)
revert back to relying on network.cookie.lifetimePolicy
2022-07-18 10:38:43 +00:00
7 changed files with 360 additions and 363 deletions

View File

@ -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). 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. 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.

View File

@ -3,17 +3,19 @@ TITLE prefs.js cleaner
REM ### prefs.js cleaner for Windows REM ### prefs.js cleaner for Windows
REM ## author: @claustromaniac REM ## author: @claustromaniac
REM ## version: 2.4 REM ## version: 2.7
CD /D "%~dp0" CD /D "%~dp0"
IF /I "%~1"=="-unattended" (SET _ua=1)
:begin :begin
ECHO: ECHO:
ECHO: ECHO:
ECHO ######################################## ECHO ########################################
ECHO #### prefs.js cleaner for Windows #### ECHO #### prefs.js cleaner for Windows ####
ECHO #### by claustromaniac #### ECHO #### by claustromaniac ####
ECHO #### v2.4 #### ECHO #### v2.7 ####
ECHO ######################################## ECHO ########################################
ECHO: ECHO:
CALL :message "This script should be run from your Firefox profile directory." CALL :message "This script should be run from your Firefox profile directory."
@ -22,17 +24,22 @@ 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. ECHO This Firefox profile shouldn't be in use during the process.
CALL :message "" CALL :message ""
TIMEOUT 1 /nobreak >nul TIMEOUT 1 /nobreak >nul
CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]"
CLS IF NOT DEFINED _ua (
IF ERRORLEVEL 3 (EXIT /B) CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]"
IF ERRORLEVEL 2 (GOTO :showhelp) 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 "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) IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30)
CALL :strlenCheck CALL :strlenCheck
CALL :FFcheck CALL :FFcheck
CALL :message "Backing up prefs.js..." CALL :message "Backing up prefs.js..."
SET "_time=%time: =0%" FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%#
COPY /B /V /Y prefs.js "prefs-backup-%date:/=-%_%_time::=.%.js" COPY /B /V /Y prefs.js "prefs-backup-%ldt%.js"
CALL :message "Cleaning prefs.js..." CALL :message "Cleaning prefs.js..."
CALL :cleanup CALL :cleanup
CALL :message "All done!" CALL :message "All done!"

View File

@ -2,33 +2,65 @@
## prefs.js cleaner for Linux/Mac ## prefs.js cleaner for Linux/Mac
## author: @claustromaniac ## author: @claustromaniac
## version: 1.4 ## version: 1.9
## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh ## 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() )
# 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) ## 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 ## 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() { fQuit() {
## change directory back to the original working directory ## change directory back to the original working directory
cd "${currdir}" cd "${CURRDIR}"
[ "$1" -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2 [ "$1" -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2
exit $1 exit $1
} }
fUsage() { fUsage() {
echo -e "\nUsage: $0 [-s]" echo -e "\nUsage: $0 [-ds]"
echo -e " echo -e "
Optional Arguments: 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() { fFF_check() {
@ -40,6 +72,24 @@ fFF_check() {
done 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" "$@" -d
exit 0
}
fClean() { fClean() {
# the magic happens here # the magic happens here
prefs="@@" prefs="@@"
@ -69,7 +119,8 @@ fStart() {
fi fi
fFF_check 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" mv prefs.js "${bakfile}" || fQuit 1 "Operation aborted.\nReason: Could not create backup file $bakfile"
echo -e "\nprefs.js backed up: $bakfile" echo -e "\nprefs.js backed up: $bakfile"
echo "Cleaning prefs.js..." echo "Cleaning prefs.js..."
@ -77,18 +128,37 @@ fStart() {
fQuit 0 "All done!" 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 -e "\n\n"
echo " ╔══════════════════════════╗" echo " ╔══════════════════════════╗"
echo " ║ prefs.js cleaner ║" echo " ║ prefs.js cleaner ║"
echo " ║ by claustromaniac ║" echo " ║ by claustromaniac ║"
echo " ║ v1.4 ║" echo " ║ v1.9 ║"
echo " ╚══════════════════════════╝" echo " ╚══════════════════════════╝"
echo -e "\nThis script should be run from your Firefox profile directory.\n" 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 "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 "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 "\nThis Firefox profile shouldn't be in use during the process.\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 select option in Start Help Exit; do
case $option in case $option in
@ -112,3 +182,5 @@ select option in Start Help Exit; do
;; ;;
esac esac
done done
fQuit 0

View File

@ -3,7 +3,7 @@
- removed from the arkenfox user.js - removed from the arkenfox user.js
- deprecated by Mozilla but listed in the arkenfox user.js in the past - deprecated by Mozilla but listed in the arkenfox user.js in the past
Last updated: 1-July-2022 Last updated: 20-July-2023
Instructions: Instructions:
- [optional] close Firefox and backup your profile - [optional] close Firefox and backup your profile
@ -32,6 +32,13 @@
const aPREFS = [ const aPREFS = [
/* DEPRECATED */ /* DEPRECATED */
/* 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
'privacy.resistFingerprinting.testGranularityMask', // 114
'security.pki.sha1_enforcement_level', // 103
/* 92-102 */ /* 92-102 */
'browser.urlbar.suggest.quicksuggest', // 95 'browser.urlbar.suggest.quicksuggest', // 95
'dom.securecontext.whitelist_onions', // 97 'dom.securecontext.whitelist_onions', // 97
@ -41,7 +48,6 @@
'network.http.spdy.enabled.http2', 'network.http.spdy.enabled.http2',
'network.http.spdy.websockets', 'network.http.spdy.websockets',
'layout.css.font-visibility.level', // 94 'layout.css.font-visibility.level', // 94
'network.cookie.lifetimePolicy', // 102 [technically removed in 104]
'security.ask_for_password', // 102 'security.ask_for_password', // 102
'security.csp.enable', // 99 'security.csp.enable', // 99
'security.password_lifetime', // 102 'security.password_lifetime', // 102
@ -235,6 +241,28 @@
'toolkit.telemetry.unifiedIsOptIn', 'toolkit.telemetry.unifiedIsOptIn',
/* REMOVED */ /* REMOVED */
/* 103-115 */
'beacon.enabled',
'browser.startup.blankWindow',
'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',
'dom.disable_beforeunload',
'dom.disable_open_during_load',
'dom.netinfo.enabled',
'dom.vr.enabled',
'extensions.formautofill.addresses.supported',
'extensions.formautofill.available',
'extensions.formautofill.creditCards.available',
'extensions.formautofill.creditCards.supported',
'middlemouse.contentLoadURL',
'network.http.altsvc.oe',
/* 92-102 */ /* 92-102 */
'browser.urlbar.trimURLs', 'browser.urlbar.trimURLs',
'dom.caches.enabled', 'dom.caches.enabled',

View File

@ -3,10 +3,10 @@ TITLE arkenfox user.js updater
REM ## arkenfox user.js updater for Windows REM ## arkenfox user.js updater for Windows
REM ## author: @claustromaniac REM ## author: @claustromaniac
REM ## version: 4.16 REM ## version: 4.19
REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows REM ## instructions: https://github.com/arkenfox/user.js/wiki/5.1-Updater-[Options]#-windows
SET v=4.15 SET v=4.19
VERIFY ON VERIFY ON
CD /D "%~dp0" CD /D "%~dp0"
@ -177,8 +177,8 @@ IF EXIST user.js.new (
IF DEFINED _singlebackup ( IF DEFINED _singlebackup (
MOVE /Y user.js user.js.bak >nul MOVE /Y user.js user.js.bak >nul
) ELSE ( ) ELSE (
SET "_time=!time: =0!" FOR /F "delims=" %%# IN ('powershell get-date -format "{yyyyMMdd_HHmmss}"') DO @SET ldt=%%#
MOVE /Y user.js "user-backup-!date:/=-!_!_time::=.!.js" >nul MOVE /Y user.js "user-backup-!ldt!.js" >nul
) )
REN user.js.new user.js REN user.js.new user.js
CALL :message "Update complete." CALL :message "Update complete."

View File

@ -2,12 +2,18 @@
## arkenfox user.js updater for macOS and Linux ## arkenfox user.js updater for macOS and Linux
## version: 3.4 ## version: 3.9
## Author: Pat Johnson (@overdodactyl) ## 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() ) ## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_updater() )
# 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
fi
readonly CURRDIR=$(pwd) readonly CURRDIR=$(pwd)
SCRIPT_FILE=$(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)
@ -195,10 +201,10 @@ update_updater() {
echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}" echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}"
read -p "" -n 1 -r read -p "" -n 1 -r
echo -e "\n\n" 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 fi
else else
return 0 # No update available return 0 # No update available
fi fi
mv "${tmpfile}" "$SCRIPT_FILE" mv "${tmpfile}" "$SCRIPT_FILE"
chmod u+x "$SCRIPT_FILE" chmod u+x "$SCRIPT_FILE"
@ -253,7 +259,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}" 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 read -p "" -n 1 -r
echo -e "\n" echo -e "\n"
if [[ $REPLY =~ ^[Nn]$ ]]; then if ! [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}Process aborted${NC}" echo -e "${RED}Process aborted${NC}"
rm "$newfile" rm "$newfile"
return 1 return 1
@ -385,6 +391,17 @@ show_banner
update_updater "$@" update_updater "$@"
getProfilePath # updates PROFILE_PATH or exits on error 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" cd "$CURRDIR"

533
user.js
View File

@ -1,7 +1,7 @@
/****** /******
* name: arkenfox user.js * name: arkenfox user.js
* date: 1 July 2022 * date: 26 July 2023
* version: 102 * version: 115
* url: https://github.com/arkenfox/user.js * url: https://github.com/arkenfox/user.js
* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt * 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 * It is best to use the arkenfox release that is optimized for and matches your Firefox version
* EVERYONE: each release * EVERYONE: each release
- run prefsCleaner to reset prefs made inactive, including deprecated (9999s) - run prefsCleaner to reset prefs made inactive, including deprecated (9999s)
ESR91 ESR102
- If you are not using arkenfox v91... (not a definitive list) - 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 - 9999: switch the appropriate deprecated section(s) back on
* INDEX: * INDEX:
@ -60,7 +61,7 @@
6000: DON'T TOUCH 6000: DON'T TOUCH
7000: DON'T BOTHER 7000: DON'T BOTHER
8000: DON'T BOTHER: FINGERPRINTING 8000: DON'T BOTHER: FINGERPRINTING
9000: PERSONAL 9000: NON-PROJECT RELATED
9999: DEPRECATED / REMOVED / LEGACY / RENAMED 9999: DEPRECATED / REMOVED / LEGACY / RENAMED
******/ ******/
@ -77,34 +78,23 @@ user_pref("browser.aboutConfig.showWarning", false);
/*** [SECTION 0100]: STARTUP ***/ /*** [SECTION 0100]: STARTUP ***/
user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!"); 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] /* 0102: set startup page [SETUP-CHROME]
* 0=blank, 1=home, 2=last visited page, 3=resume previous session * 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 ***/ * [SETTING] General>Startup>Restore previous session ***/
user_pref("browser.startup.page", 0); user_pref("browser.startup.page", 0);
/* 0103: set HOME+NEWWINDOW page /* 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 ***/ * [SETTING] Home>New Windows and Tabs>Homepage and new windows ***/
user_pref("browser.startup.homepage", "about:blank"); user_pref("browser.startup.homepage", "about:blank");
/* 0104: set NEWTAB page /* 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 ***/ * [SETTING] Home>New Windows and Tabs>New tabs ***/
user_pref("browser.newtabpage.enabled", false); user_pref("browser.newtabpage.enabled", false);
user_pref("browser.newtab.preload", false); /* 0105: disable sponsored content on Firefox Home (Activity Stream)
/* 0105: disable some Activity Stream items * [SETTING] Home>Firefox Home Content ***/
* Activity Stream is the default homepage/newtab based on metadata and browsing behavior user_pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] Pocket > Sponsored Stories
* [SETTING] Home>Firefox Home Content>... to show/hide what you want ***/ user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Sponsored shortcuts
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+]
/* 0106: clear default topsites /* 0106: clear default topsites
* [NOTE] This does not block you from adding your own ***/ * [NOTE] This does not block you from adding your own ***/
user_pref("browser.newtabpage.activity-stream.default.sites", ""); user_pref("browser.newtabpage.activity-stream.default.sites", "");
@ -119,20 +109,13 @@ 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.ms-windows-location", false); // [WINDOWS]
user_pref("geo.provider.use_corelocation", false); // [MAC] user_pref("geo.provider.use_corelocation", false); // [MAC]
user_pref("geo.provider.use_gpsd", false); // [LINUX] user_pref("geo.provider.use_gpsd", false); // [LINUX]
/* 0203: disable region updates user_pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX]
* [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+]
/* 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 /* 0210: set preferred language for displaying pages
* [SETTING] General>Language and Appearance>Language>Choose your preferred language... * [SETTING] General>Language and Appearance>Language>Choose your preferred language...
* [TEST] https://addons.mozilla.org/about ***/ * [TEST] https://addons.mozilla.org/about ***/
user_pref("intl.accept_languages", "en-US, en"); user_pref("intl.accept_languages", "en-US, en");
/* 0211: use en-US locale regardless of the system or region 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] * [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 ***/ * [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 ***/
user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF] user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF]
@ -181,6 +164,9 @@ user_pref("toolkit.coverage.endpoint.base", "");
/* 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+] /* 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+]
* Defense-in-depth: currently covered by 0331 ***/ * Defense-in-depth: currently covered by 0331 ***/
user_pref("browser.ping-centre.telemetry", false); 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 ***/ /** STUDIES ***/
/* 0340: disable Studies /* 0340: disable Studies
@ -219,6 +205,7 @@ user_pref("network.connectivity-service.enabled", false);
[1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/ [1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/
[2] https://wiki.mozilla.org/Security/Safe_Browsing [2] https://wiki.mozilla.org/Security/Safe_Browsing
[3] https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work [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!"); user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!");
/* 0401: disable SB (Safe Browsing) /* 0401: disable SB (Safe Browsing)
@ -273,7 +260,8 @@ user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost
/* 0701: disable IPv6 /* 0701: disable IPv6
* IPv6 can be abused, especially with MAC addresses, and can leak with VPNs: assuming * 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 * 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 * [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 * [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, * 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. * then this won't make much difference. If you are masking your IP, then it can only help.
@ -307,10 +295,11 @@ user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF]
* [WARNING] If false, this will break the fallback for some security features * [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 * [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 ***/ * [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+] /* 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] * 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/ * [1] https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/
* [2] https://wiki.mozilla.org/Security/DOH-resolver-policy * [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/en-US/kb/firefox-dns-over-https
@ -333,7 +322,7 @@ user_pref("keyword.enabled", false);
* as the 411 for DNS errors?), privacy issues (why connect to sites you didn't * 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), * 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) ***/ * 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 /* 0804: disable live search suggestions
* [NOTE] Both must be true for the location bar to work * [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 * [SETUP-CHROME] Override these if you trust and use a privacy respecting search engine
@ -344,9 +333,9 @@ user_pref("browser.urlbar.suggest.searches", false);
* [1] https://bugzilla.mozilla.org/1348275 ***/ * [1] https://bugzilla.mozilla.org/1348275 ***/
user_pref("browser.urlbar.speculativeConnect.enabled", false); user_pref("browser.urlbar.speculativeConnect.enabled", false);
/* 0806: disable location bar leaking single words to a DNS provider **after searching** [FF78+] /* 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 ***/ * [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+] /* 0807: disable location bar contextual suggestions [FF92+]
* [SETTING] Privacy & Security>Address Bar>Suggestions from... * [SETTING] Privacy & Security>Address Bar>Suggestions from...
* [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/ * [1] https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/ ***/
@ -363,16 +352,6 @@ user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
* [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html * [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html
* [2] https://bugzilla.mozilla.org/381681 ***/ * [2] https://bugzilla.mozilla.org/381681 ***/
user_pref("browser.formfill.enable", false); 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.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 /* 0820: disable coloring of visited links
* [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive * [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 * redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing
@ -407,7 +386,7 @@ user_pref("network.auth.subresource-http-auth-allow", 1);
/* 0906: enforce no automatic authentication on Microsoft sites [FF91+] [WINDOWS 10+] /* 0906: enforce no automatic authentication on Microsoft sites [FF91+] [WINDOWS 10+]
* [SETTING] Privacy & Security>Logins and Passwords>Allow Windows single sign-on for... * [SETTING] Privacy & Security>Logins and Passwords>Allow Windows single sign-on for...
* [1] https://support.mozilla.org/kb/windows-sso ***/ * [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 ***/ /*** [SECTION 1000]: DISK AVOIDANCE ***/
user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!"); user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!");
@ -423,10 +402,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 * define on which sites to save extra session data such as form content, cookies and POST data
* 0=everywhere, 1=unencrypted sites, 2=nowhere ***/ * 0=everywhere, 1=unencrypted sites, 2=nowhere ***/
user_pref("browser.sessionstore.privacy_level", 2); 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] /* 1005: disable automatic Firefox start and session restore after reboot [FF62+] [WINDOWS]
* [1] https://bugzilla.mozilla.org/603903 ***/ * [1] https://bugzilla.mozilla.org/603903 ***/
user_pref("toolkit.winRegisterApplicationRestart", false); user_pref("toolkit.winRegisterApplicationRestart", false);
@ -451,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 * 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 * 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? * [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 (Feb 2023) reports over 99.3% of top sites have secure renegotiation [4]
* [1] https://wiki.mozilla.org/Security:Renegotiation * [1] https://wiki.mozilla.org/Security:Renegotiation
* [2] https://datatracker.ietf.org/doc/html/rfc5746 * [2] https://datatracker.ietf.org/doc/html/rfc5746
* [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555 * [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555
@ -477,7 +452,8 @@ user_pref("security.tls.enable_0rtt_data", false);
* [SETTING] Privacy & Security>Security>Certificates>Query OCSP responder servers... * [SETTING] Privacy & Security>Security>Certificates>Query OCSP responder servers...
* [1] https://en.wikipedia.org/wiki/Ocsp ***/ * [1] https://en.wikipedia.org/wiki/Ocsp ***/
user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1] 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) * 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) * 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 * It is pointless to soft-fail when an OCSP fetch fails: you cannot confirm a cert is still valid (it
@ -493,11 +469,9 @@ user_pref("security.OCSP.require", true);
* 2=detect Family Safety mode and import the root * 2=detect Family Safety mode and import the root
* [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 ***/ * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686 ***/
user_pref("security.family_safety.mode", 0); user_pref("security.family_safety.mode", 0);
/* 1223: enable strict pinning /* 1223: enable strict PKP (Public Key Pinning)
* PKP (Public Key Pinning) 0=disabled, 1=allow user MiTM (such as your antivirus), 2=strict * 0=disabled, 1=allow user MiTM (default; such as your antivirus), 2=strict
* [SETUP-WEB] If you rely on an AV (antivirus) to protect your web browsing * [SETUP-WEB] MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE ***/
* by inspecting ALL your web traffic, then leave at current default=1
* [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16206 ***/
user_pref("security.cert_pinning.enforcement_level", 2); user_pref("security.cert_pinning.enforcement_level", 2);
/* 1224: enable CRLite [FF73+] /* 1224: enable CRLite [FF73+]
* 0 = disabled * 0 = disabled
@ -510,14 +484,14 @@ user_pref("security.remote_settings.crlite_filters.enabled", true);
user_pref("security.pki.crlite_mode", 2); user_pref("security.pki.crlite_mode", 2);
/** MIXED CONTENT ***/ /** MIXED CONTENT ***/
/* 1241: disable insecure passive content (such as images) on https pages [SETUP-WEB] ***/ /* 1241: disable insecure passive content (such as images) on https pages ***/
user_pref("security.mixed_content.block_display_content", true); // 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 [FF76+]
* When the top-level is HTTPS, insecure subresources are also upgraded (silent fail) * 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] to add site exceptions: Padlock>HTTPS-Only mode>On (after "Continue to HTTP Site")
* [SETTING] Privacy & Security>HTTPS-Only Mode (and manage exceptions) * [SETTING] Privacy & Security>HTTPS-Only Mode (and manage exceptions)
* [TEST] http://example.com [upgrade] * [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", true); // [FF76+]
// user_pref("dom.security.https_only_mode_pbm", true); // [FF80+] // user_pref("dom.security.https_only_mode_pbm", true); // [FF80+]
/* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/ /* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/
@ -535,10 +509,6 @@ user_pref("dom.security.https_only_mode_send_http_background_request", false);
* [1] https://wiki.mozilla.org/Security:Renegotiation * [1] https://wiki.mozilla.org/Security:Renegotiation
* [2] https://bugzilla.mozilla.org/1353705 ***/ * [2] https://bugzilla.mozilla.org/1353705 ***/
user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); 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 /* 1272: display advanced information on Insecure Connection warning pages
* only works when it's possible to add an exception * 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/) * i.e. it doesn't work for HSTS discrepancies (https://subdomain.preloaded-hsts.badssl.com/)
@ -547,8 +517,6 @@ user_pref("browser.xul.error_pages.expert_bad_cert", true);
/*** [SECTION 1400]: FONTS ***/ /*** [SECTION 1400]: FONTS ***/
user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!"); 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+] /* 1402: limit font visibility (Windows, Mac, some Linux) [FF94+]
* Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed * 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 (4506) over TP over Standard
@ -589,15 +557,6 @@ user_pref("privacy.userContext.ui.enabled", true);
/*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/ /*** [SECTION 2000]: PLUGINS / MEDIA / WEBRTC ***/
user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!"); 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
* [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+] ***/ /* 2002: force WebRTC inside the proxy [FF70+] ***/
user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
/* 2003: force a single network interface for ICE candidates generation [FF42+] /* 2003: force a single network interface for ICE candidates generation [FF42+]
@ -623,58 +582,26 @@ 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 ***/ * [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("media.eme.enabled", false);
// user_pref("browser.eme.ui.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) ***/ /*** [SECTION 2400]: DOM (DOCUMENT OBJECT MODEL) ***/
user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!"); 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 ***/ /* 2402: prevent scripts from moving and resizing open windows ***/
user_pref("dom.disable_window_move_resize", true); 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");
/*** [SECTION 2600]: MISCELLANEOUS ***/ /*** [SECTION 2600]: MISCELLANEOUS ***/
user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!"); user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!");
/* 2601: prevent accessibility services from accessing your browser [RESTART] /* 2601: prevent accessibility services from accessing your browser [RESTART]
* [1] https://support.mozilla.org/kb/accessibility-services ***/ * [1] https://support.mozilla.org/kb/accessibility-services ***/
user_pref("accessibility.force_disabled", 1); 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 /* 2603: remove temp files opened with an external application
* [1] https://bugzilla.mozilla.org/302433 ***/ * [1] https://bugzilla.mozilla.org/302433 ***/
user_pref("browser.helperApps.deleteTempFileOnExit", true); 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 ***/ /* 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.enabled", false);
user_pref("browser.uitour.url", ""); // user_pref("browser.uitour.url", ""); // Defense-in-depth
/* 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 /* 2608: reset remote debugging to disabled
* [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 ***/ * [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 ***/
user_pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false] 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+] /* 2615: disable websites overriding Firefox's keyboard shortcuts [FF58+]
* 0 (default) or 1=allow, 2=block * 0 (default) or 1=allow, 2=block
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Override Keyboard Shortcuts ***/ * [SETTING] to add site exceptions: Ctrl+I>Permissions>Override Keyboard Shortcuts ***/
@ -692,16 +619,16 @@ user_pref("webchannel.allowObject.urlWhitelist", "");
* [3] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=punycode+firefox * [3] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=punycode+firefox
* [4] https://www.xudongz.com/blog/2017/idn-phishing/ ***/ * [4] https://www.xudongz.com/blog/2017/idn-phishing/ ***/
user_pref("network.IDN_show_punycode", true); 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 * 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") * 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 * [WHY] pdfjs is lightweight, open source, and secure: the last exploit was June 2015 [1]
* Exploits are rare (one serious case in seven years), treated seriously and patched quickly.
* It doesn't break "state separation" of browser content (by not sharing with OS, independent apps). * 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. * 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 * [NOTE] JS can still force a pdf to open in-browser by bundling its own code
* CAVEAT: 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) ***/ * [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.disabled", false); // [DEFAULT: false]
user_pref("pdfjs.enableScripting", false); // [FF86+] user_pref("pdfjs.enableScripting", false); // [FF86+]
/* 2621: disable links launching Windows Store on Windows 8/8.1/10 [WINDOWS] ***/ /* 2621: disable links launching Windows Store on Windows 8/8.1/10 [WINDOWS] ***/
@ -712,6 +639,8 @@ user_pref("network.protocol-handler.external.ms-windows-store", false);
* for these will show/use their correct 3rd party origin * for these will show/use their correct 3rd party origin
* [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion ***/ * [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion ***/
user_pref("permissions.delegation.enabled", false); 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 ***/ /** DOWNLOADS ***/
/* 2651: enable user interaction for security by always asking where to download /* 2651: enable user interaction for security by always asking where to download
@ -759,40 +688,46 @@ user_pref("browser.contentblocking.category", "strict");
* [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/ * [3] https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#storage_access_heuristics ***/
// user_pref("privacy.antitracking.enableWebcompat", false); // user_pref("privacy.antitracking.enableWebcompat", false);
/* 2710: enable state partitioning of service workers [FF96+] ***/ /* 2710: enable state partitioning of service workers [FF96+] ***/
user_pref("privacy.partition.serviceWorkers", true); 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 ***/ /*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/
user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!"); 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
/* 2810: enable Firefox to clear items on shutdown (2811) * [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/
* [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); 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] /* 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] If "history" is true, downloads will also be cleared
* [NOTE] "sessions": Active Logins: refers to HTTP Basic Authentication [1], not logins via cookies * [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 ***/ * [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/
user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true] user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.sessions", 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] // user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false]
/* 2812: delete cache on exit [FF96+] /* 2812: set Session Restore to clear on shutdown (if 2810 is true) [FF34+]
* [NOTE] We already disable disk cache (1001) and clear on exit (2811) which is more robust * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811)
* [1] https://bugzilla.mozilla.org/1671182 ***/ * [NOTE] If true, this prevents resuming from crashes (also see 5008) ***/
// user_pref("privacy.clearsitedata.cache.enabled", true); // 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
/** SANITIZE MANUAL: IGNORES "ALLOW" SITE EXCEPTIONS ***/
/* 2820: reset default items to clear with Ctrl-Shift-Del [SETUP-CHROME] /* 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 * 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 * Firefox remembers your last choices. This will reset them when you start Firefox
@ -805,14 +740,9 @@ user_pref("privacy.cpd.sessions", true); // [DEFAULT: true]
user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false] user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false]
user_pref("privacy.cpd.cookies", false); user_pref("privacy.cpd.cookies", false);
// user_pref("privacy.cpd.downloads", true); // not used, see note above // 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.openWindows", false); // Session Restore
// user_pref("privacy.cpd.siteSettings", false); // [DEFAULT: false] // user_pref("privacy.cpd.passwords", false);
/* 2821: clear Session Restore data when sanitizing on shutdown or manually [FF34+] // user_pref("privacy.cpd.siteSettings", false);
* [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);
/* 2822: reset default "Time range to clear" for "Clear Recent History" (2820) /* 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 * 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 * 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today
@ -823,20 +753,18 @@ user_pref("privacy.sanitize.timeSpan", 0);
/*** [SECTION 4500]: RFP (RESIST FINGERPRINTING) /*** [SECTION 4500]: RFP (RESIST FINGERPRINTING)
RFP covers a wide range of ongoing fingerprinting solutions. 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 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 [WARNING] DO NOT USE extensions to alter RFP protected metrics
418986 - limit window.screen & CSS media queries (FF41) 418986 - limit window.screen & CSS media queries (FF41)
[TEST] https://arkenfox.github.io/TZP/tzp.html#screen
1281949 - spoof screen orientation (FF50) 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) 1330890 - spoof timezone as UTC0 (FF55)
1360039 - spoof navigator.hardwareConcurrency as 2 (FF55) 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55)
FF56 FF56
1369303 - spoof/disable performance API 1369303 - spoof/disable performance API
1333651 - spoof User Agent & Navigator 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 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 1369319 - disable device sensor API
1369357 - disable site specific zoom 1369357 - disable site specific zoom
@ -849,8 +777,7 @@ user_pref("privacy.sanitize.timeSpan", 0);
1217290 & 1409677 - enable some fingerprinting resistance for WebGL 1217290 & 1409677 - enable some fingerprinting resistance for WebGL
1382545 - reduce fingerprinting in Animation API 1382545 - reduce fingerprinting in Animation API
1354633 - limit MediaError.message to a whitelist 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) 1372073 - spoof/block fingerprinting in MediaDevices API (FF59)
Spoof: enumerate devices as one "Internal Camera" and one "Internal Microphone" Spoof: enumerate devices as one "Internal Camera" and one "Internal Microphone"
Block: suppresses the ondevicechange event Block: suppresses the ondevicechange event
@ -869,19 +796,23 @@ user_pref("privacy.sanitize.timeSpan", 0);
1595823 - return audioContext sampleRate as 44100 (FF72) 1595823 - return audioContext sampleRate as 44100 (FF72)
1607316 - spoof pointer as coarse and hover as none (ANDROID) (FF74) 1607316 - spoof pointer as coarse and hover as none (ANDROID) (FF74)
1621433 - randomize canvas (previously FF58+ returned an all-white canvas) (FF78) 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) 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) 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) 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)
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)
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"); 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 * [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 * 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 ***/ * [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+] /* 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 * [SETUP-CHROME] sizes round down in hundreds: width to 200s and height to 100s, to fit your screen
* [1] https://bugzilla.mozilla.org/1330882 ***/ * [1] https://bugzilla.mozilla.org/1330882 ***/
@ -890,7 +821,7 @@ user_pref("privacy.window.maxInnerHeight", 900);
/* 4503: disable mozAddonManager Web API [FF57+] /* 4503: disable mozAddonManager Web API [FF57+]
* [NOTE] To allow extensions to work on AMO, you also need 2662 * [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 ***/ * [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+] /* 4504: enable RFP letterboxing [FF67+]
* Dynamically resizes the inner window by applying margins in stepped ranges [2] * 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. * If you use the dimension pref, then it will only apply those resolutions.
@ -906,16 +837,11 @@ user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF]
* [WARNING] DO NOT USE unless testing, see [1] comment 12 * [WARNING] DO NOT USE unless testing, see [1] comment 12
* [1] https://bugzilla.mozilla.org/1635603 ***/ * [1] https://bugzilla.mozilla.org/1635603 ***/
// user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid"); // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid");
// user_pref("privacy.resistFingerprinting.testGranularityMask", 0);
/* 4506: set RFP's font visibility level (1402) [FF94+] ***/ /* 4506: set RFP's font visibility level (1402) [FF94+] ***/
// user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 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 ***/
user_pref("browser.startup.blankWindow", false);
/* 4510: disable using system colors /* 4510: disable using system colors
* [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use 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 /* 4511: enforce non-native widget theme
* Security: removes/reduces system API calls, e.g. win32k API [1] * Security: removes/reduces system API calls, e.g. win32k API [1]
* Fingerprinting: provides a uniform look and feel across platforms [2] * Fingerprinting: provides a uniform look and feel across platforms [2]
@ -947,7 +873,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). * 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 * 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 * 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 * [SETTING] Privacy & Security>History>Custom Settings>Always use private browsing mode
* [1] https://wiki.mozilla.org/Private_Browsing * [1] https://wiki.mozilla.org/Private_Browsing
* [2] https://support.mozilla.org/kb/common-myths-about-private-browsing ***/ * [2] https://support.mozilla.org/kb/common-myths-about-private-browsing ***/
@ -967,7 +893,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow
/* 5005: disable intermediate certificate caching [FF41+] [RESTART] /* 5005: disable intermediate certificate caching [FF41+] [RESTART]
* [NOTE] This affects login/cert/key dbs. The effect is all credentials are session-only. * [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 ***/ * 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 /* 5006: disable favicons in history and bookmarks
* [NOTE] Stored as data blobs in favicons.sqlite, these don't reveal anything that your * [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 * actual history (and bookmarks) already do. Your history is more detailed, so
@ -976,7 +902,8 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow
// user_pref("browser.chrome.site_icons", false); // user_pref("browser.chrome.site_icons", false);
/* 5007: exclude "Undo Closed Tabs" in Session Restore ***/ /* 5007: exclude "Undo Closed Tabs" in Session Restore ***/
// user_pref("browser.sessionstore.max_tabs_undo", 0); // 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); // user_pref("browser.sessionstore.resume_from_crash", false);
/* 5009: disable "open with" in download dialog [FF50+] /* 5009: disable "open with" in download dialog [FF50+]
* Application data isolation [1] * Application data isolation [1]
@ -1009,6 +936,19 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow
* 0=desktop, 1=downloads (default), 2=last used * 0=desktop, 1=downloads (default), 2=last used
* [SETTING] To set your default "downloads": General>Downloads>Save files to ***/ * [SETTING] To set your default "downloads": General>Downloads>Save files to ***/
// user_pref("browser.download.folderList", 2); // 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
* [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+]
/* 5018: limit events that can cause a pop-up ***/
// 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 /*** [SECTION 5500]: OPTIONAL HARDENING
Not recommended. Overriding these can cause breakage and performance issues, Not recommended. Overriding these can cause breakage and performance issues,
@ -1047,6 +987,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 * [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 ***/ * [3] https://www.zdnet.com/article/half-of-the-websites-using-webassembly-use-it-for-malicious-purposes ***/
// user_pref("javascript.options.wasm", false); // 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 ***/ /*** [SECTION 6000]: DON'T TOUCH ***/
user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!"); user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!");
@ -1061,47 +1003,49 @@ user_pref("network.http.referer.spoofSource", false); // [DEFAULT: false]
* [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/ * [1] https://www.squarefree.com/2004/07/01/race-conditions-in-security-dialogs/ ***/
user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000] user_pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000]
/* 6008: enforce no First Party Isolation [FF51+] /* 6008: enforce no First Party Isolation [FF51+]
* [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), * [WARNING] Replaced with network partitioning (FF85+) and TCP (2701), and enabling FPI
* and enabling FPI disables those. FPI is no longer maintained ***/ * disables those. FPI is no longer maintained except at Tor Project for Tor Browser's config ***/
user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false] user_pref("privacy.firstparty.isolate", false); // [DEFAULT: false]
/* 6009: enforce SmartBlock shims [FF81+] /* 6009: enforce SmartBlock shims [FF81+]
* In FF96+ these are listed in about:compat * In FF96+ these are listed in about:compat
* [1] https://blog.mozilla.org/security/2021/03/23/introducing-smartblock/ ***/ * [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); // [DEFAULT: true]
/* 6010: enforce/reset TLS 1.0/1.1 downgrades to session only /* 6010: enforce no TLS 1.0/1.1 downgrades
* [NOTE] In FF97+ the TLS 1.0/1.1 downgrade UX was removed
* [TEST] https://tls-v1-1.badssl.com:1010/ ***/ * [TEST] https://tls-v1-1.badssl.com:1010/ ***/
user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false] user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false]
/* 6011: enforce disabling of Web Compatibility Reporter [FF56+] /* 6011: enforce disabling of Web Compatibility Reporter [FF56+]
* Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla * 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 ***/ * [WHY] To prevent wasting Mozilla's time with a custom setup ***/
user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false] user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
/* 6012: disable SHA-1 certificates ***/ /* 6012: enforce Quarantined Domains [FF115+]
user_pref("security.pki.sha1_enforcement_level", 1); // [DEFAULT: 1 FF102+] * [WHY] https://support.mozilla.org/kb/quarantined-domains */
/* 6050: prefsCleaner: reset items removed from arkenfox FF92+ ***/ user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
// user_pref("browser.urlbar.trimURLs", ""); /* 6050: prefsCleaner: reset previously active items removed from arkenfox FF102+ ***/
// user_pref("dom.caches.enabled", ""); // user_pref("beacon.enabled", "");
// user_pref("dom.storageManager.enabled", ""); // user_pref("browser.startup.blankWindow", "");
// user_pref("dom.storage_access.enabled", ""); // user_pref("browser.newtab.preload", "");
// user_pref("dom.targetBlankNoOpener.enabled", ""); // user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", "");
// user_pref("network.cookie.thirdparty.sessionOnly", ""); // user_pref("browser.newtabpage.activity-stream.feeds.snippets", "");
// user_pref("network.cookie.thirdparty.nonsecureSessionOnly", ""); // user_pref("browser.region.network.url", "");
// user_pref("privacy.firstparty.isolate.block_post_message", ""); // user_pref("browser.region.update.enabled", "");
// user_pref("privacy.firstparty.isolate.restrict_opener_access", ""); // user_pref("browser.ssl_override_behavior", "");
// user_pref("privacy.firstparty.isolate.use_site", ""); // user_pref("devtools.chrome.enabled", "");
// user_pref("privacy.window.name.update.enabled", ""); // user_pref("dom.disable_beforeunload", "");
// user_pref("security.insecure_connection_text.enabled", ""); // 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", "");
/*** [SECTION 7000]: DON'T BOTHER ***/ /*** [SECTION 7000]: DON'T BOTHER ***/
user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!"); user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!");
/* 7001: disable APIs /* 7001: disable APIs
* Location-Aware Browsing, Full Screen, offline cache (appCache), Virtual Reality * Location-Aware Browsing, Full Screen
* [WHY] The API state is easily fingerprintable. Geo and VR are behind prompts (7002). * [WHY] The API state is easily fingerprintable.
* appCache storage capability was removed in FF90. Full screen requires user interaction ***/ * Geo is behind a prompt (7002). Full screen requires user interaction ***/
// user_pref("geo.enabled", false); // user_pref("geo.enabled", false);
// user_pref("full-screen-api.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 /* 7002: set default permissions
* Location, Camera, Microphone, Notifications [FF58+] Virtual Reality [FF73+] * Location, Camera, Microphone, Notifications [FF58+] Virtual Reality [FF73+]
* 0=always ask (default), 1=allow, 2=block * 0=always ask (default), 1=allow, 2=block
@ -1117,8 +1061,8 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
/* 7003: disable non-modern cipher suites [1] /* 7003: disable non-modern cipher suites [1]
* [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks * [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks
* [1] https://browserleaks.com/ssl ***/ * [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); // [DEFAULT: false FF109+]
// user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); // 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_128_sha", false);
// user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false); // user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false);
// user_pref("security.ssl3.rsa_aes_128_gcm_sha256", false); // no PFS // user_pref("security.ssl3.rsa_aes_128_gcm_sha256", false); // no PFS
@ -1132,7 +1076,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
/* 7005: disable SSL session IDs [FF36+] /* 7005: disable SSL session IDs [FF36+]
* [WHY] Passive fingerprinting and perf costs. These are session-only * [WHY] Passive fingerprinting and perf costs. These are session-only
* and isolated with network partitioning (FF85+) and/or containers ***/ * 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 /* 7006: onions
* [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/ * [WHY] Firefox doesn't support hidden services. Use Tor Browser ***/
// user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006 // user_pref("dom.securecontext.allowlist_onions", true); // [FF97+] 1382359/1744006
@ -1149,7 +1093,6 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
/* 7010: disable HTTP Alternative Services [FF37+] /* 7010: disable HTTP Alternative Services [FF37+]
* [WHY] Already isolated with network partitioning (FF85+) ***/ * [WHY] Already isolated with network partitioning (FF85+) ***/
// user_pref("network.http.altsvc.enabled", false); // 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 /* 7011: disable website control over browser right-click context menu
* [WHY] Just use Shift-Right-Click ***/ * [WHY] Just use Shift-Right-Click ***/
// user_pref("dom.event.contextmenu.enabled", false); // user_pref("dom.event.contextmenu.enabled", false);
@ -1172,7 +1115,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
// user_pref("privacy.donottrackheader.enabled", true); // user_pref("privacy.donottrackheader.enabled", true);
/* 7016: customize ETP settings /* 7016: customize ETP settings
* [WHY] Arkenfox only supports strict (2701) which sets these at runtime ***/ * [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", true);
// user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+] // 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);
@ -1182,8 +1125,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.cryptomining.enabled", true); // [DEFAULT: true]
// user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true] // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true]
/* 7017: disable service workers /* 7017: disable service workers
* [WHY] Already isolated (FF96+) with TCP (2701) behind a pref (2710) * [WHY] Already isolated with TCP (2701) behind a pref (2710) ***/
* or blocked with TCP in 3rd parties (FF95 or lower) ***/
// user_pref("dom.serviceWorkers.enabled", false); // user_pref("dom.serviceWorkers.enabled", false);
/* 7018: disable Web Notifications /* 7018: disable Web Notifications
* [WHY] Web Notifications are behind a prompt (7002) * [WHY] Web Notifications are behind a prompt (7002)
@ -1195,159 +1137,90 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
* [NOTE] To remove all subscriptions, reset "dom.push.userAgentID" * [NOTE] To remove all subscriptions, reset "dom.push.userAgentID"
* [1] https://support.mozilla.org/kb/push-notifications-firefox ***/ * [1] https://support.mozilla.org/kb/push-notifications-firefox ***/
// user_pref("dom.push.enabled", false); // 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 /*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING
[WHY] They are insufficient to help anti-fingerprinting and do more harm than good [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 [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"); user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan");
/* 8001: disable APIs ***/ /* 8001: prefsCleaner: reset items useless for anti-fingerprinting ***/
// user_pref("device.sensors.enabled", false); // user_pref("browser.display.use_document_fonts", "");
// user_pref("dom.enable_performance", false); // user_pref("browser.zoom.siteSpecific", "");
// user_pref("dom.enable_resource_timing", false); // user_pref("device.sensors.enabled", "");
// user_pref("dom.gamepad.enabled", false); // user_pref("dom.enable_performance", "");
// user_pref("dom.netinfo.enabled", false); // [DEFAULT: false NON-ANDROID: false ANDROID FF99+] // user_pref("dom.enable_resource_timing", "");
// user_pref("dom.webaudio.enabled", false); // user_pref("dom.gamepad.enabled", "");
/* 8002: disable other ***/ // user_pref("dom.maxHardwareConcurrency", "");
// user_pref("browser.display.use_document_fonts", 0); // user_pref("dom.w3c_touch_events.enabled", "");
// user_pref("browser.zoom.siteSpecific", false); // user_pref("dom.webaudio.enabled", "");
// user_pref("dom.w3c_touch_events.enabled", 0); // user_pref("font.system.whitelist", "");
// user_pref("media.navigator.enabled", false); // user_pref("general.appname.override", "");
// user_pref("media.ondevicechange.enabled", false); // user_pref("general.appversion.override", "");
// user_pref("media.video_stats.enabled", false); // user_pref("general.buildID.override", "");
// user_pref("media.webspeech.synth.enabled", false); // user_pref("general.oscpu.override", "");
// user_pref("webgl.enable-debug-renderer-info", false); // user_pref("general.platform.override", "");
/* 8003: spoof ***/ // user_pref("general.useragent.override", "");
// user_pref("dom.maxHardwareConcurrency", 2); // user_pref("media.navigator.enabled", "");
// user_pref("font.system.whitelist", ""); // [HIDDEN PREF] // user_pref("media.ondevicechange.enabled", "");
// user_pref("general.appname.override", ""); // [HIDDEN PREF] // user_pref("media.video_stats.enabled", "");
// user_pref("general.appversion.override", ""); // [HIDDEN PREF] // user_pref("media.webspeech.synth.enabled", "");
// user_pref("general.buildID.override", ""); // [HIDDEN PREF] // user_pref("ui.use_standins_for_native_colors", "");
// user_pref("general.oscpu.override", ""); // [HIDDEN PREF] // user_pref("webgl.enable-debug-renderer-info", "");
// user_pref("general.platform.override", ""); // [HIDDEN PREF]
// user_pref("general.useragent.override", ""); // [HIDDEN PREF]
// user_pref("ui.use_standins_for_native_colors", true);
/*** [SECTION 9000]: PERSONAL /*** [SECTION 9000]: NON-PROJECT RELATED ***/
Non-project related but useful. If any interest you, add them to your overrides
***/
user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!"); user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!");
/* WELCOME & WHAT'S NEW NOTICES ***/ /* 9001: disable welcome notices ***/
user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switch user_pref("browser.startup.homepage_override.mstone", "ignore");
// user_pref("startup.homepage_welcome_url", ""); /* 9002: disable General>Browsing>Recommend extensions/features as you browse [FF67+] ***/
// user_pref("startup.homepage_welcome_url.additional", ""); user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
// user_pref("startup.homepage_override_url", ""); // What's New page after updates user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
/* WARNINGS ***/ /* 9003: disable What's New toolbar icon [FF69+] ***/
// user_pref("browser.tabs.warnOnClose", false); // [DEFAULT false FF94+] user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
// user_pref("browser.tabs.warnOnCloseOtherTabs", false); /* 9004: disable search terms [FF110+]
// user_pref("browser.tabs.warnOnOpen", false); * [SETTING] Search>Search Bar>Use the address bar for search and navigation>Show search terms instead of URL... ***/
// user_pref("browser.warnOnQuitShortcut", false); // [FF94+] user_pref("browser.urlbar.showSearchTerms.enabled", false);
// 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
/* 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("network.manage-offline-status", false); // see bugzilla 620472
// user_pref("xpinstall.signatures.required", false); // enforced extension signing (Nightly/ESR)
/*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED /*** [SECTION 9999]: DEPRECATED / REMOVED / LEGACY / RENAMED
Documentation denoted as [-]. Items deprecated prior to FF91 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 [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!"); user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!");
/* ESR91.x still uses all the following prefs /* 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
// FF93 // FF103
// 7003: disable non-modern cipher suites // 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810)
// [-] 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]
// 2801: delete cookies and site data on exit - replaced by sanitizeOnShutdown* (2810)
// 0=keep until they expire (default), 2=keep until you close Firefox // 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 // [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); user_pref("network.cookie.lifetimePolicy", 2);
// 6007: enforce Local Storage Next Generation (LSNG) [FF65+] // 6012: disable SHA-1 certificates
// [-] https://bugzilla.mozilla.org/1764696 // [-] https://bugzilla.mozilla.org/1766687
user_pref("dom.storage.next_gen", true); // [DEFAULT: true FF92+] // 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 ***/ /* END: internal custom pref to test for syntax errors ***/