mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 17:38:30 +02:00
Compare commits
84 Commits
v82.0-beta
...
87.0
Author | SHA1 | Date | |
---|---|---|---|
ada8158caf | |||
2071939c5e | |||
f082278217 | |||
abe37add6e | |||
bc07ca94c0 | |||
728c962684 | |||
ca99add006 | |||
f771027138 | |||
8f1c0044b9 | |||
87cd828b5b | |||
46ccd9f654 | |||
b1927f9de1 | |||
b592e0e592 | |||
3b6cd93749 | |||
3a24c01f03 | |||
b7c80841a9 | |||
95645f59a3 | |||
9138e342fd | |||
692ed70ea9 | |||
3430507ae4 | |||
844f3ce9c8 | |||
03ffb90186 | |||
5f9bb59b95 | |||
7163efdd1e | |||
65fb24ff1b | |||
612cfbf313 | |||
4596d721e6 | |||
911206eed5 | |||
cb5cdca99d | |||
e54ae46537 | |||
7c978d4e70 | |||
d905b4387d | |||
c31c825a74 | |||
6505a9fefd | |||
de74f812ee | |||
82bb3f987d | |||
a35a616de7 | |||
ecf99bf9e7 | |||
cfaf354fe3 | |||
0b51e98d91 | |||
fa51251235 | |||
21fcd0bd35 | |||
96d558dd0c | |||
b6e8dcab81 | |||
fa78c53114 | |||
2f6b14ab6e | |||
2dd455ef83 | |||
306610da8e | |||
59ac1727f7 | |||
c974b3252d | |||
480933484f | |||
0cbd8a13a3 | |||
ae6c76fe54 | |||
1f098f2eaf | |||
11977e7017 | |||
27dd6aa62d | |||
c570e4fdbd | |||
da58f84fa6 | |||
755a45505f | |||
9d74cb9526 | |||
8c9d0bbe72 | |||
0152b38b8b | |||
e6cf90146a | |||
63d1258f2e | |||
46bab27f94 | |||
2cfbba1472 | |||
c980bda695 | |||
feaa1c3e99 | |||
aa1c2145bb | |||
335ee84540 | |||
5c37d50f4e | |||
77abf35761 | |||
fa85c9da5b | |||
cf53982086 | |||
91cbc1e09a | |||
a7e4268d8b | |||
699eacf1fd | |||
0189438e46 | |||
94712f59a3 | |||
ef93a754ce | |||
c6ddda1aa3 | |||
ccbca41e2d | |||
5b0d173078 | |||
d6186819f4 |
@ -15,6 +15,7 @@ Before you proceed...
|
||||
- Note: We do not support forks
|
||||
|
||||
See also:
|
||||
- Override Recipes [issue 1080](https://github.com/arkenfox/user.js/issues/1080)
|
||||
- Extension breakage due to prefs [issue 391](https://github.com/arkenfox/user.js/issues/391)
|
||||
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/arkenfox/user.js/issues/350)
|
||||
|
||||
|
@ -3,7 +3,7 @@ TITLE prefs.js cleaner
|
||||
|
||||
REM ### prefs.js cleaner for Windows
|
||||
REM ## author: @claustromaniac
|
||||
REM ## version: 2.3
|
||||
REM ## version: 2.4
|
||||
|
||||
CD /D "%~dp0"
|
||||
|
||||
@ -13,7 +13,7 @@ ECHO:
|
||||
ECHO ########################################
|
||||
ECHO #### prefs.js cleaner for Windows ####
|
||||
ECHO #### by claustromaniac ####
|
||||
ECHO #### v2.3 ####
|
||||
ECHO #### v2.4 ####
|
||||
ECHO ########################################
|
||||
ECHO:
|
||||
CALL :message "This script should be run from your Firefox profile directory."
|
||||
@ -28,6 +28,7 @@ IF ERRORLEVEL 3 (EXIT /B)
|
||||
IF ERRORLEVEL 2 (GOTO :showhelp)
|
||||
IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory." 30)
|
||||
IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30)
|
||||
CALL :strlenCheck
|
||||
CALL :FFcheck
|
||||
CALL :message "Backing up prefs.js..."
|
||||
SET "_time=%time: =0%"
|
||||
@ -50,6 +51,21 @@ ECHO:
|
||||
ECHO: %~1
|
||||
ECHO:
|
||||
GOTO :EOF
|
||||
REM ### string length Check Function ####
|
||||
:strlenCheck
|
||||
SET /a cnt=0
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" prefs.js') DO (
|
||||
ECHO:%%H >nul
|
||||
SET /a cnt += 1
|
||||
IF /I "%%G" NEQ "!cnt!" (
|
||||
ECHO:
|
||||
CALL :message "ERROR: line !cnt! in prefs.js is too long."
|
||||
(CALL :abort "Aborting ..." 30)
|
||||
)
|
||||
)
|
||||
endlocal
|
||||
GOTO :EOF
|
||||
REM ####### Firefox Check Function ######
|
||||
:FFcheck
|
||||
TASKLIST /FI "IMAGENAME eq firefox.exe" 2>NUL | FIND /I /N "firefox.exe">NUL
|
||||
|
@ -1,7 +1,7 @@
|
||||
/***
|
||||
This will reset the preferences that have been removed completely from the arkenfox user.js.
|
||||
|
||||
Last updated: 02-Nov-2020
|
||||
Last updated: 03-Apr-2021
|
||||
|
||||
For instructions see:
|
||||
https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
(function() {
|
||||
let ops = [
|
||||
/* removed in arkenfox user.js v52-57 */
|
||||
/* removed in arkenfox user.js */
|
||||
/* 52-alpha */
|
||||
'browser.search.reset.enabled',
|
||||
'browser.search.reset.whitelist',
|
||||
@ -26,7 +26,6 @@
|
||||
'extensions.pocket.api', // covered by extensions.pocket.enabled
|
||||
'extensions.pocket.oAuthConsumerKey', // ditto
|
||||
'extensions.pocket.site', // ditto
|
||||
/* 56-alpha: none */
|
||||
/* 57-alpha */
|
||||
'geo.wifi.xhr.timeout', // covered by geo.enabled
|
||||
'browser.search.geoip.timeout', // ditto
|
||||
@ -223,13 +222,20 @@
|
||||
'browser.search.region',
|
||||
/* 79-beta */
|
||||
'browser.urlbar.usepreloadedtopurls.enabled',
|
||||
/* 80 */
|
||||
'dom.IntersectionObserver.enabled',
|
||||
/* 82-beta */
|
||||
'dom.IntersectionObserver.enabled',
|
||||
'extensions.screenshots.upload-disabled',
|
||||
'privacy.partition.network_state',
|
||||
'security.ssl3.dhe_rsa_aes_128_sha',
|
||||
'security.ssl3.dhe_rsa_aes_256_sha',
|
||||
/* 84-beta */
|
||||
'browser.newtabpage.activity-stream.asrouter.providers.snippets',
|
||||
/* 85-beta */
|
||||
'network.http.redirection-limit',
|
||||
/* 86-beta */
|
||||
'media.gmp-widevinecdm.visible',
|
||||
/* 87-beta */
|
||||
'browser.send_pings.require_same_host',
|
||||
/* reset parrot: check your open about:config after running the script */
|
||||
'_user.js.parrot'
|
||||
]
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
/*** arkenfox user.js troubleshooter.js v1.6.2 ***/
|
||||
/*** arkenfox user.js troubleshooter.js v1.6.3 ***/
|
||||
|
||||
(function() {
|
||||
|
||||
@ -17,9 +17,7 @@
|
||||
|
||||
/* Storage + Cache */
|
||||
'browser.cache.offline.enable',
|
||||
'dom.indexedDB.enabled',
|
||||
'dom.storage.enabled',
|
||||
'browser.storageManager.enabled',
|
||||
'dom.storageManager.enabled',
|
||||
|
||||
/* Workers, Web + Push Notifications */
|
||||
@ -34,7 +32,6 @@
|
||||
/* Fonts */
|
||||
'browser.display.use_document_fonts',
|
||||
'font.blacklist.underline_offset',
|
||||
'gfx.downloadable_fonts.woff2.enabled',
|
||||
'gfx.font_rendering.graphite.enabled',
|
||||
'gfx.font_rendering.opentype_svg.enabled',
|
||||
'layout.css.font-loading-api.enabled',
|
||||
@ -47,12 +44,10 @@
|
||||
'dom.IntersectionObserver.enabled',
|
||||
'dom.popup_allowed_events',
|
||||
'full-screen-api.enabled',
|
||||
'geo.wifi.uri',
|
||||
'intl.accept_languages',
|
||||
'javascript.options.asmjs',
|
||||
'javascript.options.wasm',
|
||||
'permissions.default.shortcuts',
|
||||
'security.csp.experimentalEnabled',
|
||||
|
||||
/* Hardware */
|
||||
'dom.vr.enabled',
|
||||
@ -60,7 +55,6 @@
|
||||
|
||||
/* Audio + Video */
|
||||
'dom.webaudio.enabled',
|
||||
'media.autoplay.enabled',
|
||||
'media.autoplay.default', // FF63+
|
||||
'media.autoplay.blocking_policy', // FF78+
|
||||
|
||||
@ -89,13 +83,11 @@
|
||||
|
||||
/* Plugins + Flash */
|
||||
'plugin.default.state',
|
||||
'plugin.defaultXpi.state',
|
||||
'plugin.sessionPermissionNow.intervalInMinutes',
|
||||
'plugin.state.flash',
|
||||
|
||||
/* unlikely to cause problems */
|
||||
'browser.tabs.remote.allowLinkedWebInFileUriProcess',
|
||||
'dom.popup_maximum',
|
||||
'geo.provider.network.url',
|
||||
'layout.css.visited_links_enabled',
|
||||
'mathml.disabled',
|
||||
'network.auth.subresource-http-auth-allow',
|
||||
@ -103,6 +95,7 @@
|
||||
'network.protocol-handler.external.ms-windows-store',
|
||||
'privacy.trackingprotection.enabled',
|
||||
'security.data_uri.block_toplevel_data_uri_navigations',
|
||||
'privacy.window.name.update.enabled', // FF82+
|
||||
|
||||
'last.one.without.comma'
|
||||
]
|
||||
@ -168,8 +161,8 @@
|
||||
reapply(aALL);
|
||||
myreset(aTmp.slice(0, _h(aTmp)));
|
||||
while (aTmp.length) {
|
||||
alert("NOW TEST AGAIN !");
|
||||
if (confirm("if the problem still exists click OK, otherwise click cancel.")) {
|
||||
alert('NOW TEST AGAIN !');
|
||||
if (confirm('if the problem still exists click OK, otherwise click Cancel.')) {
|
||||
aTmp = aTmp.slice(_h(aTmp));
|
||||
} else {
|
||||
aTmp = aTmp.slice(0, _h(aTmp));
|
||||
@ -183,16 +176,16 @@
|
||||
|
||||
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
||||
if (aDbg.length == aALL.length) {
|
||||
let msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n";
|
||||
msg += "Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n";
|
||||
msg += "In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
|
||||
const msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n" +
|
||||
"Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n" +
|
||||
"In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
|
||||
if (confirm(msg)) return _main([...aALL, oFILLER]);
|
||||
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
|
||||
return _main(aDbg.reverse());
|
||||
}
|
||||
|
||||
alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
||||
console.log("The problem is caused by 2 or more of these prefs:");
|
||||
console.log('The problem is caused by 2 or more of these prefs:');
|
||||
for (const oPref of aDbg) console.log(oPref.name);
|
||||
}
|
||||
|
||||
@ -201,14 +194,18 @@
|
||||
|
||||
const aBAK = getMyList(aPREFS);
|
||||
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
||||
|
||||
const sMsg = "all detected prefs reset.\n\n" +
|
||||
"!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\n" +
|
||||
"IF the problem still exists, this script can't help you - click Cancel to re-apply your values and exit.\n\n" +
|
||||
"Click OK if your problem is fixed.";
|
||||
|
||||
focus();
|
||||
myreset(aBAK);
|
||||
if (!confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")) {
|
||||
if (!confirm(sMsg)) {
|
||||
reapply(aBAK);
|
||||
return;
|
||||
}
|
||||
|
||||
_main(aBAK);
|
||||
|
||||
})();
|
||||
|
28
updater.bat
28
updater.bat
@ -3,10 +3,10 @@ TITLE arkenfox user.js updater
|
||||
|
||||
REM ## arkenfox user.js updater for Windows
|
||||
REM ## author: @claustromaniac
|
||||
REM ## version: 4.12
|
||||
REM ## version: 4.14
|
||||
REM ## instructions: https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts
|
||||
|
||||
SET v=4.12
|
||||
SET v=4.14
|
||||
|
||||
VERIFY ON
|
||||
CD /D "%~dp0"
|
||||
@ -28,6 +28,15 @@ SHIFT
|
||||
GOTO parse
|
||||
:endparse
|
||||
|
||||
FOR /F %%i IN ('PowerShell -Command "[Enum]::GetNames([Net.SecurityProtocolType]) -contains 'Tls12'"') DO (
|
||||
IF "%%i" == "False" (
|
||||
CALL :message "Your PowerShell version doesn't support TLS1.2 ^!"
|
||||
ECHO: Instructions to update PowerShell are on the arkenfox wiki
|
||||
PAUSE
|
||||
EXIT
|
||||
)
|
||||
)
|
||||
|
||||
IF DEFINED _updateb (
|
||||
REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
|
||||
IF NOT "!_myname:~0,9!"=="[updated]" (
|
||||
@ -51,9 +60,7 @@ IF DEFINED _updateb (
|
||||
CALL :message "Updating script..."
|
||||
REM Uncomment the next line and comment out the PowerShell call for testing.
|
||||
REM COPY /B /Y "!_myname!.bat" "[updated]!_myname!.bat" >nul
|
||||
(
|
||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/arkenfox/user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
||||
) >nul 2>&1
|
||||
CALL :psdownload https://raw.githubusercontent.com/arkenfox/user.js/master/updater.bat "[updated]!_myname!.bat"
|
||||
IF EXIST "[updated]!_myname!.bat" (
|
||||
START /min CMD /C "[updated]!_myname!.bat" !_myparams!
|
||||
) ELSE (
|
||||
@ -132,9 +139,7 @@ IF DEFINED _log (
|
||||
)
|
||||
IF EXIST user.js.new (DEL /F "user.js.new")
|
||||
CALL :message "Retrieving latest user.js file from github repository..."
|
||||
(
|
||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/arkenfox/user.js/master/user.js', 'user.js.new')"
|
||||
) >nul 2>&1
|
||||
CALL :psdownload https://raw.githubusercontent.com/arkenfox/user.js/master/user.js "user.js.new"
|
||||
IF EXIST user.js.new (
|
||||
IF DEFINED _rfpalts (
|
||||
CALL :message "Activating RFP Alternatives section..."
|
||||
@ -218,6 +223,13 @@ IF NOT "2"=="%_log%" (ECHO:)
|
||||
ENDLOCAL
|
||||
GOTO :EOF
|
||||
|
||||
::::::::::::::: Download :::::::::::::::
|
||||
:psdownload
|
||||
(
|
||||
PowerShell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; (New-Object Net.WebClient).DownloadFile('%~1', '%~2')"
|
||||
) >nul 2>&1
|
||||
GOTO :EOF
|
||||
|
||||
::::::::::::::: Activate Section :::::::::::::::
|
||||
:activate
|
||||
:: arg1 = file
|
||||
|
65
updater.sh
65
updater.sh
@ -2,7 +2,7 @@
|
||||
|
||||
## arkenfox user.js updater for macOS and Linux
|
||||
|
||||
## version: 2.8
|
||||
## version: 3.0
|
||||
## Author: Pat Johnson (@overdodactyl)
|
||||
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
|
||||
|
||||
@ -10,9 +10,9 @@
|
||||
|
||||
readonly CURRDIR=$(pwd)
|
||||
|
||||
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||
[ -z "$sfp" ] && sfp=${BASH_SOURCE[0]}
|
||||
readonly SCRIPT_DIR=$(dirname "${sfp}")
|
||||
SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||
[ -z "$SCRIPT_FILE" ] && SCRIPT_FILE=${BASH_SOURCE[0]}
|
||||
readonly SCRIPT_DIR=$(dirname "${SCRIPT_FILE}")
|
||||
|
||||
|
||||
#########################
|
||||
@ -103,7 +103,6 @@ Optional Arguments:
|
||||
# File Handling #
|
||||
#########################
|
||||
|
||||
# Download files
|
||||
download_file () { # expects URL as argument ($1)
|
||||
declare -r tf=$(mktemp)
|
||||
|
||||
@ -122,36 +121,33 @@ open_file () { # expects one argument: file_path
|
||||
|
||||
readIniFile () { # expects one argument: absolute path of profiles.ini
|
||||
declare -r inifile="$1"
|
||||
declare -r tfile=$(mktemp)
|
||||
|
||||
if [ $(grep '^\[Profile' "$inifile" | wc -l) == "1" ]; then ### only 1 profile found
|
||||
grep '^\[Profile' -A 4 "$inifile" | grep -v '^\[Profile' > $tfile
|
||||
# tempIni will contain: [ProfileX], Name=, IsRelative= and Path= (and Default= if present) of the only (if) or the selected (else) profile
|
||||
if [ $(grep -c '^\[Profile' "${inifile}") -eq "1" ]; then ### only 1 profile found
|
||||
tempIni="$(grep '^\[Profile' -A 4 "${inifile}")"
|
||||
else
|
||||
grep -E -v '^\[General\]|^StartWithLastProfile=|^IsRelative=' "$inifile"
|
||||
echo ''
|
||||
echo -e "Profiles found:\n––––––––––––––––––––––––––––––"
|
||||
## cmd-substitution to strip trailing newlines and in quotes to keep internal ones:
|
||||
echo "$(grep --color=never -E 'Default=[^1]|\[Profile[0-9]*\]|Name=|Path=|^$' "${inifile}")"
|
||||
echo '––––––––––––––––––––––––––––––'
|
||||
read -p 'Select the profile number ( 0 for Profile0, 1 for Profile1, etc ) : ' -r
|
||||
echo -e "\n"
|
||||
if [[ $REPLY =~ ^(0|[1-9][0-9]*)$ ]]; then
|
||||
grep '^\[Profile'${REPLY} -A 4 "$inifile" | grep -v '^\[Profile'${REPLY} > $tfile
|
||||
if [[ "$?" != "0" ]]; then
|
||||
echo "Profile${REPLY} does not exist!" && exit 1
|
||||
fi
|
||||
tempIni="$(grep "^\[Profile${REPLY}" -A 4 "${inifile}")" || {
|
||||
echo -e "${RED}Profile${REPLY} does not exist!${NC}" && exit 1
|
||||
}
|
||||
else
|
||||
echo "Invalid selection!" && exit 1
|
||||
echo -e "${RED}Invalid selection!${NC}" && exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
declare -r profpath=$(grep '^Path=' $tfile)
|
||||
declare -r pathisrel=$(grep '^IsRelative=' $tfile)
|
||||
# extracting 0 or 1 from the "IsRelative=" line
|
||||
declare -r pathisrel=$(sed -n 's/^IsRelative=\([01]\)$/\1/p' <<< "${tempIni}")
|
||||
|
||||
rm "$tfile"
|
||||
|
||||
# update global variable
|
||||
if [[ ${pathisrel#*=} == "1" ]]; then
|
||||
PROFILE_PATH="$(dirname "$inifile")/${profpath#*=}"
|
||||
else
|
||||
PROFILE_PATH="${profpath#*=}"
|
||||
fi
|
||||
# extracting only the path itself, excluding "Path="
|
||||
PROFILE_PATH=$(sed -n 's/^Path=\(.*\)$/\1/p' <<< "${tempIni}")
|
||||
# update global variable if path is relative
|
||||
[[ ${pathisrel} == "1" ]] && PROFILE_PATH="$(dirname "${inifile}")/${PROFILE_PATH}"
|
||||
}
|
||||
|
||||
getProfilePath () {
|
||||
@ -161,16 +157,14 @@ getProfilePath () {
|
||||
if [ "$PROFILE_PATH" = false ]; then
|
||||
PROFILE_PATH="$SCRIPT_DIR"
|
||||
elif [ "$PROFILE_PATH" = 'list' ]; then
|
||||
local ini=''
|
||||
if [[ -f "$f1" ]]; then
|
||||
ini="$f1"
|
||||
readIniFile "$f1" # updates PROFILE_PATH or exits on error
|
||||
elif [[ -f "$f2" ]]; then
|
||||
ini="$f2"
|
||||
readIniFile "$f2"
|
||||
else
|
||||
echo -e "${RED}Error: Sorry, -l is not supported for your OS${NC}"
|
||||
exit 1
|
||||
fi
|
||||
readIniFile "$ini" # updates PROFILE_PATH or exits on error
|
||||
#else
|
||||
# PROFILE_PATH already set by user with -p
|
||||
fi
|
||||
@ -191,14 +185,12 @@ get_updater_version () {
|
||||
# -d: New version will not be looked for and update will not occur
|
||||
# -u: Check for update, if available, execute without asking
|
||||
update_updater () {
|
||||
if [ $UPDATE = 'no' ]; then
|
||||
return 0 # User signified not to check for updates
|
||||
fi
|
||||
[ $UPDATE = 'no' ] && return 0 # User signified not to check for updates
|
||||
|
||||
declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/updater.sh')"
|
||||
[ -z "${tmpfile}" ] && echo -e "${RED}Error! Could not download updater.sh${NC}" && return 1 # check if download failed
|
||||
|
||||
if [[ $(get_updater_version "${SCRIPT_DIR}/updater.sh") < $(get_updater_version "${tmpfile}") ]]; then
|
||||
if [[ $(get_updater_version "$SCRIPT_FILE") < $(get_updater_version "${tmpfile}") ]]; then
|
||||
if [ $UPDATE = 'check' ]; then
|
||||
echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}"
|
||||
read -p "" -n 1 -r
|
||||
@ -208,13 +200,12 @@ update_updater () {
|
||||
else
|
||||
return 0 # No update available
|
||||
fi
|
||||
mv "${tmpfile}" "${SCRIPT_DIR}/updater.sh"
|
||||
chmod u+x "${SCRIPT_DIR}/updater.sh"
|
||||
"${SCRIPT_DIR}/updater.sh" "$@" -d
|
||||
mv "${tmpfile}" "$SCRIPT_FILE"
|
||||
chmod u+x "$SCRIPT_FILE"
|
||||
"$SCRIPT_FILE" "$@" -d
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
#########################
|
||||
# Update user.js #
|
||||
#########################
|
||||
|
341
user.js
341
user.js
@ -1,7 +1,7 @@
|
||||
/******
|
||||
* name: arkenfox user.js
|
||||
* date: 11 Nov 2020
|
||||
* version 82-beta
|
||||
* date: 04 April 2021
|
||||
* version 87
|
||||
* url: https://github.com/arkenfox/user.js
|
||||
* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
* Some site breakage and unintended consequences will happen. Everyone's experience will differ
|
||||
e.g. some user data is erased on close (section 2800), change this to suit your needs
|
||||
* While not 100% definitive, search for "[SETUP" tags
|
||||
e.g. third party images/videos not loading on some sites? check 1603
|
||||
* Take the wiki link in step 2 and read the Troubleshooting entry
|
||||
5. Some tag info
|
||||
[SETUP-SECURITY] it's one item, read it
|
||||
@ -25,6 +26,7 @@
|
||||
[SETUP-CHROME] changes how Firefox itself behaves (i.e. not directly website related)
|
||||
[SETUP-PERF] may impact performance
|
||||
[WARNING] used sparingly, heed them
|
||||
6. Override Recipes: https://github.com/arkenfox/user.js/issues/1080
|
||||
|
||||
* RELEASES: https://github.com/arkenfox/user.js/releases
|
||||
|
||||
@ -34,8 +36,9 @@
|
||||
- re-enable section 4600 if you don't use RFP
|
||||
ESR78
|
||||
- If you are not using arkenfox v78... (not a definitive list)
|
||||
- 1244: HTTPS-Only mode is enabled
|
||||
- 1401: document fonts is inactive as it is now covered by RFP in FF80+
|
||||
- 4600: some prefs may apply even if you use RFP (currently none apply as of FF84)
|
||||
- 4600: some prefs may apply even if you use RFP
|
||||
- 9999: switch the appropriate deprecated section(s) back on
|
||||
|
||||
* INDEX:
|
||||
@ -80,9 +83,8 @@
|
||||
user_pref("_user.js.parrot", "START: Oh yes, the Norwegian Blue... what's wrong with it?");
|
||||
|
||||
/* 0000: disable about:config warning
|
||||
* FF71-72: chrome://global/content/config.xul
|
||||
* FF73+: chrome://global/content/config.xhtml ***/
|
||||
user_pref("general.warnOnAboutConfig", false); // XUL/XHTML version
|
||||
* FF73-86: chrome://global/content/config.xhtml ***/
|
||||
user_pref("general.warnOnAboutConfig", false); // XHTML version
|
||||
user_pref("browser.aboutConfig.showWarning", false); // HTML version [FF71+]
|
||||
|
||||
/*** [SECTION 0100]: STARTUP ***/
|
||||
@ -114,14 +116,11 @@ user_pref("browser.newtabpage.activity-stream.telemetry", false);
|
||||
* Runs code received from a server (aka Remote Code Execution) and sends information back to a metrics server
|
||||
* [1] https://abouthome-snippets-service.readthedocs.io/ ***/
|
||||
user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
|
||||
user_pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "{}");
|
||||
/* 0105c: disable Activity Stream Top Stories, Pocket-based and/or sponsored content ***/
|
||||
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+]
|
||||
/* 0105d: disable Activity Stream recent Highlights in the Library [FF57+] ***/
|
||||
// user_pref("browser.library.activity-stream.enabled", false);
|
||||
/* 0105e: clear default topsites
|
||||
* [NOTE] This does not block you from adding your own ***/
|
||||
user_pref("browser.newtabpage.activity-stream.default.sites", "");
|
||||
@ -141,13 +140,13 @@ user_pref("browser.newtabpage.activity-stream.default.sites", "");
|
||||
user_pref("_user.js.parrot", "0200 syntax error: the parrot's definitely deceased!");
|
||||
/** GEOLOCATION ***/
|
||||
/* 0201: disable Location-Aware Browsing
|
||||
* [NOTE] Best left at default "true", fingerprintable, is already behind a prompt (see 0202)
|
||||
* [NOTE] Best left at default "true", fingerprintable, already behind a prompt (see 0202)
|
||||
* [1] https://www.mozilla.org/firefox/geolocation/ ***/
|
||||
// user_pref("geo.enabled", false);
|
||||
/* 0202: set a default permission for Location (see 0201) [FF58+]
|
||||
* 0=always ask (default), 1=allow, 2=block
|
||||
* [NOTE] Best left at default "always ask", fingerprintable via Permissions API
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Access Your Location
|
||||
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Access Your Location
|
||||
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Location>Settings ***/
|
||||
// user_pref("permissions.default.geo", 2);
|
||||
/* 0203: use Mozilla geolocation service instead of Google when geolocation is enabled [FF74+]
|
||||
@ -171,19 +170,17 @@ user_pref("browser.region.update.enabled", false); // [[FF79+]
|
||||
* [TEST] https://addons.mozilla.org/about ***/
|
||||
user_pref("intl.accept_languages", "en-US, en");
|
||||
/* 0211: enforce US English locale regardless of the system locale
|
||||
* [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages, see [2]
|
||||
* [1] https://bugzilla.mozilla.org/867501
|
||||
* [2] https://bugzilla.mozilla.org/1629630 ***/
|
||||
* [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1]
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630 ***/
|
||||
user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF]
|
||||
|
||||
/*** [SECTION 0300]: QUIET FOX
|
||||
Starting in user.js v67, we only disable the auto-INSTALL of Firefox. You still get prompts
|
||||
to update, in one click. We have NEVER disabled auto-CHECKING, and highly discourage that.
|
||||
Previously we also disabled auto-INSTALLING of extensions (302b).
|
||||
We only disable the auto-INSTALL of Firefox (app) updates. You still get prompts to update,
|
||||
and it only takes one click. We highly discourage disabling auto-CHECKING for updates.
|
||||
|
||||
There are many legitimate reasons to turn off auto-INSTALLS, including hijacked or monetized
|
||||
extensions, time constraints, legacy issues, dev/testing, and fear of breakage/bugs. It is
|
||||
still important to do updates for security reasons, please do so manually if you make changes.
|
||||
Legitimate reasons to disable auto-INSTALLS include hijacked/monetized extensions, time
|
||||
constraints, legacy issues, dev/testing, and fear of breakage/bugs. It is still important
|
||||
to do updates for security reasons, please do so manually if you make changes.
|
||||
***/
|
||||
user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!");
|
||||
/* 0301b: disable auto-CHECKING for extension and theme updates ***/
|
||||
@ -216,11 +213,11 @@ user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||
* IF unified=true then .enabled ONLY controls whether to record extended data
|
||||
* so make sure to have both set as false
|
||||
* [NOTE] FF58+ 'toolkit.telemetry.enabled' is now LOCKED to reflect prerelease
|
||||
* or release builds (true and false respectively), see [2]
|
||||
* or release builds (true and false respectively) [2]
|
||||
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
|
||||
* [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/
|
||||
user_pref("toolkit.telemetry.unified", false);
|
||||
user_pref("toolkit.telemetry.enabled", false); // see [NOTE] above FF58+
|
||||
user_pref("toolkit.telemetry.enabled", false); // see [NOTE]
|
||||
user_pref("toolkit.telemetry.server", "data:,");
|
||||
user_pref("toolkit.telemetry.archive.enabled", false);
|
||||
user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
|
||||
@ -251,10 +248,10 @@ user_pref("browser.discovery.enabled", false);
|
||||
/* 0350: disable Crash Reports ***/
|
||||
user_pref("breakpad.reportURL", "");
|
||||
user_pref("browser.tabs.crashReporting.sendReport", false); // [FF44+]
|
||||
user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // [FF51+]
|
||||
/* 0351: disable backlogged Crash Reports
|
||||
// user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // [FF51+] [DEFAULT: false]
|
||||
/* 0351: enforce no submission of backlogged Crash Reports [FF58+]
|
||||
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports ***/
|
||||
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [FF58+]
|
||||
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false]
|
||||
/* 0390: disable Captive Portal detection
|
||||
* [1] https://www.eff.org/deeplinks/2017/08/how-captive-portals-interfere-wireless-security-and-privacy
|
||||
* [2] https://wiki.mozilla.org/Necko/CaptivePortal ***/
|
||||
@ -303,7 +300,7 @@ user_pref("browser.safebrowsing.downloads.remote.url", "");
|
||||
* [SETTING] Privacy & Security>Security>... "Warn you about unwanted and uncommon software" ***/
|
||||
// user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
|
||||
// user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
|
||||
/* 0419: disable 'ignore this warning' on SB warnings
|
||||
/* 0419: disable 'ignore this warning' on SB warnings [FF45+]
|
||||
* If clicked, it bypasses the block for that session. This is a means for admins to enforce SB
|
||||
* [TEST] see github wiki APPENDIX A: Test Sites: Section 5
|
||||
* [1] https://bugzilla.mozilla.org/1226490 ***/
|
||||
@ -350,9 +347,9 @@ 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+]
|
||||
/* 0518: disable Web Compatibility Reporter [FF56+]
|
||||
/* 0518: enforce disabling of Web Compatibility Reporter [FF56+]
|
||||
* Web Compatibility Reporter adds a "Report Site Issue" button to send data to Mozilla ***/
|
||||
user_pref("extensions.webcompat-reporter.enabled", false);
|
||||
user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
|
||||
|
||||
/*** [SECTION 0600]: BLOCK IMPLICIT OUTBOUND [not explicitly asked for - e.g. clicked on] ***/
|
||||
user_pref("_user.js.parrot", "0600 syntax error: the parrot's no more!");
|
||||
@ -362,31 +359,29 @@ user_pref("network.prefetch-next", false);
|
||||
/* 0602: disable DNS prefetching
|
||||
* [1] https://developer.mozilla.org/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control ***/
|
||||
user_pref("network.dns.disablePrefetch", true);
|
||||
user_pref("network.dns.disablePrefetchFromHTTPS", true); // [DEFAULT: true]
|
||||
// user_pref("network.dns.disablePrefetchFromHTTPS", true); // [DEFAULT: true]
|
||||
/* 0603: disable predictor / prefetching ***/
|
||||
user_pref("network.predictor.enabled", false);
|
||||
user_pref("network.predictor.enable-prefetch", false); // [FF48+]
|
||||
// user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false]
|
||||
/* 0605: disable link-mouseover opening connection to linked server
|
||||
* [1] https://news.slashdot.org/story/15/08/14/2321202/how-to-quash-firefoxs-silent-requests ***/
|
||||
user_pref("network.http.speculative-parallel-limit", 0);
|
||||
/* 0606: enforce no "Hyperlink Auditing" (click tracking)
|
||||
* [1] https://www.bleepingcomputer.com/news/software/major-browsers-to-prevent-disabling-of-click-tracking-privacy-risk/ ***/
|
||||
user_pref("browser.send_pings", false); // [DEFAULT: false]
|
||||
user_pref("browser.send_pings.require_same_host", true); // defense-in-depth
|
||||
// user_pref("browser.send_pings", false); // [DEFAULT: false]
|
||||
|
||||
/*** [SECTION 0700]: HTTP* / TCP/IP / DNS / PROXY / SOCKS etc ***/
|
||||
user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost!");
|
||||
/* 0701: disable IPv6
|
||||
* IPv6 can be abused, especially with MAC addresses, and they do not play nice with VPNs. That's
|
||||
* even assuming your ISP and/or router and/or website can handle it. Sites will fall back to IPv4
|
||||
* [STATS] Firefox telemetry (June 2020) shows only 5% of all connections are IPv6
|
||||
* IPv6 can be abused, especially with MAC addresses, and can leak with VPNs. That's even
|
||||
* assuming your ISP and/or router and/or website can handle it. Sites will fall back to IPv4
|
||||
* [STATS] Firefox telemetry (Dec 2020) shows ~8% of all connections are IPv6
|
||||
* [NOTE] This is just an application level fallback. Disabling IPv6 is best done at an
|
||||
* OS/network level, and/or configured properly in VPN setups. If you are not masking your IP,
|
||||
* then this won't make much difference. If you are masking your IP, then it can only help.
|
||||
* [NOTE] PHP defaults to IPv6 with "localhost". Use "php -S 127.0.0.1:PORT"
|
||||
* [TEST] https://ipleak.org/
|
||||
* [1] https://github.com/arkenfox/user.js/issues/437#issuecomment-403740626
|
||||
* [2] https://www.internetsociety.org/tag/ipv6-security/ (see Myths 2,4,5,6) ***/
|
||||
* [1] https://www.internetsociety.org/tag/ipv6-security/ (see Myths 2,4,5,6) ***/
|
||||
user_pref("network.dns.disableIPv6", true);
|
||||
/* 0702: disable HTTP2
|
||||
* HTTP2 raises concerns with "multiplexing" and "server push", does nothing to
|
||||
@ -416,7 +411,7 @@ user_pref("network.http.altsvc.oe", false);
|
||||
* [1] https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/WebBrowsers ***/
|
||||
user_pref("network.proxy.socks_remote_dns", true);
|
||||
/* 0708: disable FTP [FF60+] ***/
|
||||
// user_pref("network.ftp.enabled", false);
|
||||
// user_pref("network.ftp.enabled", false); // [DEFAULT: false FF88+]
|
||||
/* 0709: disable using UNC (Uniform Naming Convention) paths [FF61+]
|
||||
* [SETUP-CHROME] Can break extensions for profiles on network shares
|
||||
* [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/26424 ***/
|
||||
@ -458,13 +453,16 @@ user_pref("browser.fixup.alternate.enabled", false);
|
||||
/* 0803: display all parts of the url in the location bar ***/
|
||||
user_pref("browser.urlbar.trimURLs", false);
|
||||
/* 0805: disable coloring of visited links - CSS history leak
|
||||
* [NOTE] This has NEVER been fully "resolved": in Mozilla/docs it is stated it's
|
||||
* only in 'certain circumstances', also see latest comments in [2]
|
||||
* [TEST] https://earthlng.github.io/testpages/visited_links.html (see github wiki APPENDIX A on how to use)
|
||||
* [1] https://dbaron.org/mozilla/visited-privacy
|
||||
* [2] https://bugzilla.mozilla.org/147777
|
||||
* [3] https://developer.mozilla.org/docs/Web/CSS/Privacy_and_the_:visited_selector ***/
|
||||
user_pref("layout.css.visited_links_enabled", false);
|
||||
* [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive
|
||||
* redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing
|
||||
* attacks. Don't forget clearing history on close (2803). However, social engineering [2#limits][4][5]
|
||||
* and advanced targeted timing attacks could still produce usable results
|
||||
* [1] https://developer.mozilla.org/docs/Web/CSS/Privacy_and_the_:visited_selector
|
||||
* [2] https://dbaron.org/mozilla/visited-privacy
|
||||
* [3] https://bugzilla.mozilla.org/1632765
|
||||
* [4] https://earthlng.github.io/testpages/visited_links.html (see github wiki APPENDIX A on how to use)
|
||||
* [5] https://lcamtuf.blogspot.com/2016/08/css-mix-blend-mode-is-bad-for-keeping.html ***/
|
||||
// user_pref("layout.css.visited_links_enabled", false);
|
||||
/* 0807: disable live search suggestions
|
||||
/* [NOTE] Both must be true for the location bar to work
|
||||
* [SETUP-CHROME] Change these if you trust and use a privacy respecting search engine
|
||||
@ -485,19 +483,18 @@ user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0);
|
||||
// user_pref("browser.urlbar.suggest.bookmark", false);
|
||||
// user_pref("browser.urlbar.suggest.openpage", false);
|
||||
// user_pref("browser.urlbar.suggest.topsites", false); // [FF78+]
|
||||
/* 0850b: disable tab-to-search [FF85+]
|
||||
* Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search
|
||||
* [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines ***/
|
||||
// user_pref("browser.urlbar.suggest.engines", false);
|
||||
/* 0850c: disable location bar dropdown
|
||||
* This value controls the total number of entries to appear in the location bar dropdown
|
||||
* [NOTE] Items (bookmarks/history/openpages) with a high "frecency"/"bonus" will always
|
||||
* be displayed (no we do not know how these are calculated or what the threshold is),
|
||||
* and this does not affect the search by search engine suggestion (see 0807)
|
||||
* [NOTE] This setting is only useful if you want to enable search engine keywords
|
||||
* (i.e. at least one of 0850a suggestion types must be true) but you want to *limit* suggestions shown ***/
|
||||
* This value controls the total number of entries to appear in the location bar dropdown ***/
|
||||
// user_pref("browser.urlbar.maxRichResults", 0);
|
||||
/* 0850d: disable location bar autofill
|
||||
* [1] https://support.mozilla.org/en-US/kb/address-bar-autocomplete-firefox#w_url-autocomplete ***/
|
||||
// user_pref("browser.urlbar.autoFill", false);
|
||||
/* 0860: disable search and form history
|
||||
* [SETUP-WEB] Be aware that autocomplete form data can be read by third parties, see [1] [2]
|
||||
* [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2]
|
||||
* [NOTE] We also clear formdata on exit (see 2803)
|
||||
* [SETTING] Privacy & Security>History>Custom Settings>Remember search and form history
|
||||
* [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html
|
||||
@ -513,7 +510,7 @@ user_pref("browser.taskbar.lists.frequent.enabled", false);
|
||||
user_pref("browser.taskbar.lists.recent.enabled", false);
|
||||
user_pref("browser.taskbar.lists.tasks.enabled", false);
|
||||
/* 0871: disable Windows taskbar preview [WINDOWS] ***/
|
||||
user_pref("browser.taskbar.previews.enable", false);
|
||||
// user_pref("browser.taskbar.previews.enable", false); // [DEFAULT: false]
|
||||
|
||||
/*** [SECTION 0900]: PASSWORDS ***/
|
||||
user_pref("_user.js.parrot", "0900 syntax error: the parrot's expired!");
|
||||
@ -594,7 +591,7 @@ user_pref("browser.sessionstore.privacy_level", 2);
|
||||
/* 1022: disable resuming session from crash ***/
|
||||
// user_pref("browser.sessionstore.resume_from_crash", false);
|
||||
/* 1023: set the minimum interval between session save operations
|
||||
* Increasing this can help on older machines and some websites, as well as reducing writes, see [1]
|
||||
* Increasing this can help on older machines and some websites, as well as reducing writes [1]
|
||||
* Default is 15000 (15 secs). Try 30000 (30 secs), 60000 (1 min) etc
|
||||
* [SETUP-CHROME] This can also affect entries in the "Recently Closed Tabs" feature:
|
||||
* i.e. the longer the interval the more chance a quick tab open/close won't be captured.
|
||||
@ -630,38 +627,35 @@ user_pref("browser.shell.shortcutFavicons", false);
|
||||
user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!");
|
||||
/** SSL (Secure Sockets Layer) / TLS (Transport Layer Security) ***/
|
||||
/* 1201: require safe negotiation
|
||||
* Blocks connections to servers that don't support RFC 5746 [2] as they're potentially
|
||||
* vulnerable to a MiTM attack [3]. A server *without* RFC 5746 can be safe from the attack
|
||||
* if it disables renegotiations but the problem is that the browser can't know that.
|
||||
* Setting this pref to true is the only way for the browser to ensure there will be
|
||||
* Blocks connections (SSL_ERROR_UNSAFE_NEGOTIATION) to servers that don't support RFC 5746 [2]
|
||||
* as they're potentially vulnerable to a MiTM attack [3]. A server without RFC 5746 can be
|
||||
* safe from the attack if it disables renegotiations but the problem is that the browser can't
|
||||
* know that. Setting this pref to true is the only way for the browser to ensure there will be
|
||||
* no unsafe renegotiations on the channel between the browser and the server.
|
||||
* [STATS] SSL Labs (Dec 2020) reports 99.0% of sites have secure renegotiation [4]
|
||||
* [1] https://wiki.mozilla.org/Security:Renegotiation
|
||||
* [2] https://tools.ietf.org/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
|
||||
* [4] https://www.ssllabs.com/ssl-pulse/ ***/
|
||||
user_pref("security.ssl.require_safe_negotiation", true);
|
||||
/* 1202: control TLS versions with min and max
|
||||
* 1=TLS 1.0, 2=TLS 1.1, 3=TLS 1.2, 4=TLS 1.3
|
||||
* [STATS] Firefox telemetry (June 2020) shows only 0.16% of SSL handshakes use 1.0 or 1.1
|
||||
* [WARNING] Leave these at default, otherwise you alter your TLS fingerprint.
|
||||
* [1] https://www.ssllabs.com/ssl-pulse/ ***/
|
||||
// user_pref("security.tls.version.min", 3); // [DEFAULT: 3]
|
||||
// user_pref("security.tls.version.max", 4);
|
||||
/* 1203: enforce TLS 1.0 and 1.1 downgrades as session only */
|
||||
/* 1203: enforce TLS 1.0 and 1.1 downgrades as session only ***/
|
||||
user_pref("security.tls.version.enable-deprecated", false);
|
||||
/* 1204: disable SSL session tracking [FF36+]
|
||||
* SSL Session IDs are unique, last up to 24hrs in Firefox, and can be used for tracking
|
||||
* [SETUP-PERF] Relax this if you have FPI enabled (see 4000) *AND* you understand the
|
||||
* consequences. FPI isolates these, but it was designed with the Tor protocol in mind,
|
||||
* and the Tor Browser has extra protection, including enhanced sanitizing per Identity.
|
||||
* SSL Session IDs are unique and last up to 24hrs in Firefox (or longer with prolongation attacks)
|
||||
* [NOTE] These are not used in PB mode. In normal windows they are isolated when using FPI (4001)
|
||||
* and/or containers. In FF85+ they are isolated by default (privacy.partition.network_state)
|
||||
* [WARNING] There are perf and passive fingerprinting costs, for little to no gain. Preventing
|
||||
* tracking via this method does not address IPs, nor handle any sanitizing of current identifiers
|
||||
* [1] https://tools.ietf.org/html/rfc5077
|
||||
* [2] https://bugzilla.mozilla.org/967977
|
||||
* [3] https://arxiv.org/abs/1810.07304 ***/
|
||||
user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF]
|
||||
/* 1205: disable SSL Error Reporting
|
||||
* [1] https://firefox-source-docs.mozilla.org/browser/base/sslerrorreport/preferences.html ***/
|
||||
user_pref("security.ssl.errorReporting.automatic", false);
|
||||
user_pref("security.ssl.errorReporting.enabled", false);
|
||||
user_pref("security.ssl.errorReporting.url", "");
|
||||
// user_pref("security.ssl.disable_session_identifiers", true); // [HIDDEN PREF]
|
||||
/* 1206: disable TLS1.3 0-RTT (round-trip time) [FF51+]
|
||||
* [1] https://github.com/tlswg/tls13-spec/issues/1001
|
||||
* [2] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ ***/
|
||||
@ -716,6 +710,12 @@ user_pref("security.family_safety.mode", 0);
|
||||
* 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);
|
||||
/* 1224: enforce CRLite [FF73+]
|
||||
* In FF84+ it covers valid certs and in mode 2 doesn't fall back to OCSP
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985
|
||||
* [2] https://blog.mozilla.org/security/tag/crlite/ ***/
|
||||
user_pref("security.remote_settings.crlite_filters.enabled", true);
|
||||
user_pref("security.pki.crlite_mode", 2);
|
||||
|
||||
/** MIXED CONTENT ***/
|
||||
/* 1240: enforce no insecure active content on https pages
|
||||
@ -728,14 +728,25 @@ user_pref("security.mixed_content.block_display_content", true);
|
||||
user_pref("security.mixed_content.block_object_subrequest", true);
|
||||
/* 1244: enable HTTPS-Only mode [FF76+]
|
||||
* When "https_only_mode" (all windows) is true, "https_only_mode_pbm" (private windows only) is ignored
|
||||
* [WARNING] This is experimental [1] and you can't set exceptions if FPI is enabled [2] (fixed in FF83)
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Use insecure HTTP (FF80+)
|
||||
* [SETTING] Privacy & Security>HTTPS-Only Mode (FF80+ with browser.preferences.exposeHTTPSOnly = true)
|
||||
* [1] https://bugzilla.mozilla.org/1613063 [META]
|
||||
* [2] https://bugzilla.mozilla.org/1647829 ***/
|
||||
// user_pref("dom.security.https_only_mode", true); // [FF76+]
|
||||
* [SETTING] to add site exceptions: Padlock>HTTPS-Only mode>On/Off/Off temporarily
|
||||
* [SETTING] Privacy & Security>HTTPS-Only Mode
|
||||
* [TEST] http://example.com [upgrade]
|
||||
* [TEST] http://neverssl.org/ [no upgrade]
|
||||
* [1] https://bugzilla.mozilla.org/1613063 [META] ***/
|
||||
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.upgrade_local", true); // [FF77+]
|
||||
/* 1245: enable HTTPS-Only mode for local resources [FF77+] ***/
|
||||
// user_pref("dom.security.https_only_mode.upgrade_local", true);
|
||||
/* 1246: disable HTTP background requests [FF82+]
|
||||
* When attempting to upgrade, if the server doesn't respond within 3 seconds, firefox
|
||||
* sends HTTP requests in order to check if the server supports HTTPS or not.
|
||||
* This is done to avoid waiting for a timeout which takes 90 seconds
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1642387,1660945 ***/
|
||||
user_pref("dom.security.https_only_mode_send_http_background_request", false);
|
||||
/* 1247: treat .onion as a secure context [FF60+] [TOR]
|
||||
* [NOTE] Firefox cannot access .onion sites by default: it is strongly recommended you just use Tor Browser
|
||||
* [1] https://bugzilla.mozilla.org/1382359 ***/
|
||||
// user_pref("dom.securecontext.whitelist_onions", true);
|
||||
|
||||
/** CIPHERS [WARNING: do not meddle with your cipher suite: see the section 1200 intro]
|
||||
* These are all the ciphers still using SHA-1 and CBC which are weaker than the available alternatives. (see "Cipher Suites" in [1])
|
||||
@ -760,10 +771,8 @@ user_pref("security.mixed_content.block_object_subrequest", true);
|
||||
/** UI (User Interface) ***/
|
||||
/* 1270: display warning on the padlock for "broken security" (if 1201 is false)
|
||||
* Bug: warning padlock not indicated for subresources on a secure page! [2]
|
||||
* [STATS] SSL Labs (June 2020) reports 98.8% of sites have secure renegotiation [3]
|
||||
* [1] https://wiki.mozilla.org/Security:Renegotiation
|
||||
* [2] https://bugzilla.mozilla.org/1353705
|
||||
* [3] https://www.ssllabs.com/ssl-pulse/ ***/
|
||||
* [2] https://bugzilla.mozilla.org/1353705 ***/
|
||||
user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
|
||||
/* 1271: control "Add Security Exception" dialog on SSL warnings
|
||||
* 0=do neither 1=pre-populate url 2=pre-populate url + pre-fetch cert (default)
|
||||
@ -794,24 +803,21 @@ user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!");
|
||||
* [1] https://wiki.mozilla.org/SVGOpenTypeFonts - iSECPartnersReport recommends to disable this ***/
|
||||
user_pref("gfx.font_rendering.opentype_svg.enabled", false);
|
||||
/* 1408: disable graphite
|
||||
* Graphite has had many critical security issues in the past, see [1]
|
||||
* Graphite has had many critical security issues in the past [1]
|
||||
* [1] https://www.mozilla.org/security/advisories/mfsa2017-15/#CVE-2017-7778
|
||||
* [2] https://en.wikipedia.org/wiki/Graphite_(SIL) ***/
|
||||
user_pref("gfx.font_rendering.graphite.enabled", false);
|
||||
/* 1409: limit system font exposure to a whitelist [FF52+] [RESTART]
|
||||
* If the whitelist is empty, then whitelisting is considered disabled and all fonts are allowed
|
||||
* [WARNING] **DO NOT USE**: in FF80+ RFP covers this, and non-RFP users should use font vis (4618)
|
||||
* [NOTE] In FF81+ the whitelist **overrides** RFP's font visibility (see 4618)
|
||||
* [WARNING] **DO NOT USE**: in FF80+ RFP covers this, and non-RFP users should use font vis (4618)
|
||||
* [1] https://bugzilla.mozilla.org/1121643 ***/
|
||||
// user_pref("font.system.whitelist", ""); // [HIDDEN PREF]
|
||||
|
||||
/*** [SECTION 1600]: HEADERS / REFERERS
|
||||
Only *cross domain* referers need controlling: leave 1601, 1602, 1605 and 1606 alone
|
||||
---
|
||||
harden it a bit: set XOriginPolicy (1603) to 1 (as per the settings below)
|
||||
harden it a bit more: set XOriginPolicy (1603) to 2 (and optionally 1604 to 1 or 2), expect breakage
|
||||
---
|
||||
If you want any REAL control over referers and breakage, then use an extension
|
||||
Expect some breakage: Use an extension if you need precise control
|
||||
---
|
||||
full URI: https://example.com:8888/foo/bar.html?id=1234
|
||||
scheme+host+port+path: https://example.com:8888/foo/bar.html
|
||||
@ -822,17 +828,17 @@ user_pref("gfx.font_rendering.graphite.enabled", false);
|
||||
user_pref("_user.js.parrot", "1600 syntax error: the parrot rests in peace!");
|
||||
/* 1601: ALL: control when images/links send a referer
|
||||
* 0=never, 1=send only when links are clicked, 2=for links and images (default) ***/
|
||||
// user_pref("network.http.sendRefererHeader", 2); // [DEFAULT: 2]
|
||||
// user_pref("network.http.sendRefererHeader", 2);
|
||||
/* 1602: ALL: control the amount of information to send
|
||||
* 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/
|
||||
// user_pref("network.http.referer.trimmingPolicy", 0); // [DEFAULT: 0]
|
||||
// user_pref("network.http.referer.trimmingPolicy", 0);
|
||||
/* 1603: CROSS ORIGIN: control when to send a referer
|
||||
* 0=always (default), 1=only if base domains match, 2=only if hosts match
|
||||
* [SETUP-WEB] Known to cause issues with older modems/routers and some sites e.g vimeo, icloud ***/
|
||||
user_pref("network.http.referer.XOriginPolicy", 1);
|
||||
user_pref("network.http.referer.XOriginPolicy", 2);
|
||||
/* 1604: CROSS ORIGIN: control the amount of information to send [FF52+]
|
||||
* 0=send full URI (default), 1=scheme+host+port+path, 2=scheme+host+port ***/
|
||||
user_pref("network.http.referer.XOriginTrimmingPolicy", 0); // [DEFAULT: 0]
|
||||
user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
|
||||
/* 1605: ALL: disable spoofing a referer
|
||||
* [WARNING] Do not set this to true, as spoofing effectively disables the anti-CSRF
|
||||
* (Cross-Site Request Forgery) protections that some sites may rely on ***/
|
||||
@ -842,14 +848,14 @@ user_pref("network.http.referer.XOriginTrimmingPolicy", 0); // [DEFAULT: 0]
|
||||
* [NOTE] This is only a default, it can be overridden by a site-controlled Referrer Policy
|
||||
* [1] https://www.w3.org/TR/referrer-policy/
|
||||
* [2] https://developer.mozilla.org/docs/Web/HTTP/Headers/Referrer-Policy
|
||||
* [3] https://blog.mozilla.org/security/2018/01/31/preventing-data-leaks-by-stripping-path-information-in-http-referrers/ ***/
|
||||
// user_pref("network.http.referer.defaultPolicy", 3); // [DEFAULT: 3]
|
||||
* [3] https://blog.mozilla.org/security/2018/01/31/preventing-data-leaks-by-stripping-path-information-in-http-referrers/
|
||||
* [4] https://blog.mozilla.org/security/2021/03/22/firefox-87-trims-http-referrers-by-default-to-protect-user-privacy/ ***/
|
||||
// user_pref("network.http.referer.defaultPolicy", 2); // [DEFAULT: 2 FF87+]
|
||||
// user_pref("network.http.referer.defaultPolicy.pbmode", 2); // [DEFAULT: 2]
|
||||
/* 1607: TOR: hide (not spoof) referrer when leaving a .onion domain [FF54+]
|
||||
* [NOTE] Firefox cannot access .onion sites by default. We recommend you use
|
||||
* the Tor Browser which is specifically designed for hidden services
|
||||
/* 1607: hide (not spoof) referrer when leaving a .onion domain [FF54+] [TOR]
|
||||
* [NOTE] Firefox cannot access .onion sites by default: it is strongly recommended you just use Tor Browser
|
||||
* [1] https://bugzilla.mozilla.org/1305144 ***/
|
||||
user_pref("network.http.referer.hideOnionSource", true);
|
||||
// user_pref("network.http.referer.hideOnionSource", true);
|
||||
/* 1610: ALL: enable the DNT (Do Not Track) HTTP header
|
||||
* [NOTE] DNT is enforced with Enhanced Tracking Protection regardless of this pref
|
||||
* [SETTING] Privacy & Security>Enhanced Tracking Protection>Send websites a "Do Not Track" signal... ***/
|
||||
@ -886,12 +892,12 @@ user_pref("plugin.state.flash", 0);
|
||||
* [1] https://wiki.mozilla.org/GeckoMediaPlugins ***/
|
||||
// user_pref("media.gmp-provider.enabled", false);
|
||||
/* 1825: disable widevine CDM (Content Decryption Module)
|
||||
* [SETUP-WEB] if you *need* CDM, e.g. Netflix, Amazon Prime, Hulu, whatever ***/
|
||||
user_pref("media.gmp-widevinecdm.visible", false);
|
||||
user_pref("media.gmp-widevinecdm.enabled", false);
|
||||
* [NOTE] This is covered by the EME master switch (1830) ***/
|
||||
// user_pref("media.gmp-widevinecdm.enabled", false);
|
||||
/* 1830: disable all DRM content (EME: Encryption Media Extension)
|
||||
* [SETUP-WEB] if you *need* EME, e.g. Netflix, Amazon Prime, Hulu, whatever
|
||||
* [SETUP-WEB] e.g. Netflix, Amazon Prime, Hulu, HBO, Disney+, Showtime, Starz, DirectTV
|
||||
* [SETTING] General>DRM Content>Play DRM-controlled content
|
||||
* [TEST] https://bitmovin.com/demos/drm
|
||||
* [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/
|
||||
user_pref("media.eme.enabled", false);
|
||||
|
||||
@ -903,7 +909,7 @@ user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!");
|
||||
* [1] https://www.privacytools.io/#webrtc ***/
|
||||
user_pref("media.peerconnection.enabled", false);
|
||||
/* 2002: limit WebRTC IP leaks if using WebRTC
|
||||
* In FF70+ these settings match Mode 4 (Mode 3 in older versions), see [3]
|
||||
* In FF70+ these settings match Mode 4 (Mode 3 in older versions) [3]
|
||||
* [TEST] https://browserleaks.com/webrtc
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1189041,1297416,1452713
|
||||
* [2] https://wiki.mozilla.org/Media/WebRTC/Privacy
|
||||
@ -919,15 +925,15 @@ user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); // [FF70
|
||||
user_pref("webgl.disabled", true);
|
||||
user_pref("webgl.enable-webgl2", false);
|
||||
/* 2012: limit WebGL ***/
|
||||
user_pref("webgl.min_capability_mode", true);
|
||||
user_pref("webgl.disable-fail-if-major-performance-caveat", true);
|
||||
// user_pref("webgl.min_capability_mode", true);
|
||||
user_pref("webgl.disable-fail-if-major-performance-caveat", true); // [DEFAULT: true FF86+]
|
||||
/* 2022: disable screensharing ***/
|
||||
user_pref("media.getusermedia.screensharing.enabled", false);
|
||||
user_pref("media.getusermedia.browser.enabled", false);
|
||||
user_pref("media.getusermedia.audiocapture.enabled", false);
|
||||
/* 2024: set a default permission for Camera/Microphone [FF58+]
|
||||
* 0=always ask (default), 1=allow, 2=block
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Use the Camera/Microphone
|
||||
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Use the Camera/Microphone
|
||||
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Camera/Microphone>Settings ***/
|
||||
// user_pref("permissions.default.camera", 2);
|
||||
// user_pref("permissions.default.microphone", 2);
|
||||
@ -963,8 +969,8 @@ user_pref("browser.link.open_newwindow.restriction", 0);
|
||||
* [SETTING] Privacy & Security>Permissions>Block pop-up windows ***/
|
||||
user_pref("dom.disable_open_during_load", true);
|
||||
/* 2212: limit events that can cause a popup [SETUP-WEB]
|
||||
* default is "change click dblclick auxclick mouseup pointerup notificationclick reset submit touchend contextmenu" ***/
|
||||
user_pref("dom.popup_allowed_events", "click dblclick");
|
||||
* default FF86+: "change click dblclick auxclick mousedown mouseup pointerdown pointerup notificationclick reset submit touchend contextmenu ***/
|
||||
user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown");
|
||||
|
||||
/*** [SECTION 2300]: WEB WORKERS
|
||||
A worker is a JS "background task" running in a global context, i.e. it is different from
|
||||
@ -1009,7 +1015,7 @@ user_pref("dom.push.enabled", false);
|
||||
/* 2306: set a default permission for Notifications (both 2304 and 2305) [FF58+]
|
||||
* 0=always ask (default), 1=allow, 2=block
|
||||
* [NOTE] Best left at default "always ask", fingerprintable via Permissions API
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Receive Notifications
|
||||
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Receive Notifications
|
||||
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Notifications>Settings ***/
|
||||
// user_pref("permissions.default.desktop-notification", 2);
|
||||
|
||||
@ -1021,9 +1027,9 @@ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!
|
||||
/* 2402: disable website access to clipboard events/content [SETUP-HARDEN]
|
||||
* [NOTE] This will break some sites' functionality e.g. Outlook, Twitter, Facebook, Wordpress
|
||||
* This applies to onCut/onCopy/onPaste events - i.e. it requires interaction with the website
|
||||
* [WARNING] If both 'middlemouse.paste' and 'general.autoScroll' are true (at least one
|
||||
* is default false) then enabling this pref can leak clipboard content, see [1]
|
||||
* [1] https://bugzilla.mozilla.org/1528289 */
|
||||
* [WARNING] In FF88 or lower, with clipboardevents enabled, if both 'middlemouse.paste' and
|
||||
* 'general.autoScroll' are true (at least one is default false) then the clipboard can leak [1]
|
||||
* [1] https://bugzilla.mozilla.org/1528289 ***/
|
||||
// user_pref("dom.event.clipboardevents.enabled", false);
|
||||
/* 2404: disable clipboard commands (cut/copy) from "non-privileged" content [FF41+]
|
||||
* this disables document.execCommand("cut"/"copy") to protect your clipboard
|
||||
@ -1071,7 +1077,7 @@ user_pref("_user.js.parrot", "2500 syntax error: the parrot's shuffled off 'is m
|
||||
* Initially a Linux issue (high precision readout) that was fixed.
|
||||
* However, it is still another metric for fingerprinting, used to raise entropy.
|
||||
* e.g. do you have a battery or not, current charging status, charge level, times remaining etc
|
||||
* [NOTE] From FF52+ Battery Status API is only available in chrome/privileged code, see [1]
|
||||
* [NOTE] From FF52+ Battery Status API is only available in chrome/privileged code [1]
|
||||
* [1] https://bugzilla.mozilla.org/1313580 ***/
|
||||
// user_pref("dom.battery.enabled", false);
|
||||
/* 2505: disable media device enumeration [FF29+]
|
||||
@ -1100,9 +1106,9 @@ user_pref("dom.webaudio.enabled", false);
|
||||
// user_pref("dom.vr.enabled", false);
|
||||
/* 2521: set a default permission for Virtual Reality (see 2520) [FF73+]
|
||||
* 0=always ask (default), 1=allow, 2=block
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Access Virtual Reality Devices
|
||||
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Access Virtual Reality Devices
|
||||
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Virtual Reality>Settings ***/
|
||||
// user_pref("permissions.default.xr", 0);
|
||||
// user_pref("permissions.default.xr", 2);
|
||||
|
||||
/*** [SECTION 2600]: MISCELLANEOUS ***/
|
||||
user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!");
|
||||
@ -1116,8 +1122,7 @@ user_pref("beacon.enabled", false);
|
||||
/* 2603: remove temp files opened with an external application
|
||||
* [1] https://bugzilla.mozilla.org/302433 ***/
|
||||
user_pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
/* 2604: disable page thumbnail collection
|
||||
* look in profile/thumbnails directory - you may want to clean that out ***/
|
||||
/* 2604: disable page thumbnail collection ***/
|
||||
user_pref("browser.pagethumbnails.capturing_disabled", true); // [HIDDEN PREF]
|
||||
/* 2606: disable UITour backend so there is no chance that a remote page can use it ***/
|
||||
user_pref("browser.uitour.enabled", false);
|
||||
@ -1140,13 +1145,9 @@ 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);
|
||||
/* 2614: limit HTTP redirects (this does not control redirects with HTML meta tags or JS)
|
||||
* [NOTE] A low setting of 5 or under will probably break some sites (e.g. gmail logins)
|
||||
* To control HTML Meta tag and JS redirects, use an extension. Default is 20 ***/
|
||||
user_pref("network.http.redirection-limit", 10);
|
||||
/* 2615: disable websites overriding Firefox's keyboard shortcuts [FF58+]
|
||||
* 0 (default) or 1=allow, 2=block
|
||||
* [SETTING] to add site exceptions: Page Info>Permissions>Override Keyboard Shortcuts ***/
|
||||
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Override Keyboard Shortcuts ***/
|
||||
// user_pref("permissions.default.shortcuts", 2);
|
||||
/* 2616: remove special permissions for certain mozilla domains [FF35+]
|
||||
* [1] resource://app/defaults/permissions ***/
|
||||
@ -1182,12 +1183,16 @@ user_pref("browser.display.use_system_colors", false); // [DEFAULT: false]
|
||||
* Currently applies to cross-origin geolocation, camera, mic and screen-sharing
|
||||
* permissions, and fullscreen requests. Disabling delegation means any prompts
|
||||
* for these will show/use their correct 3rd party origin
|
||||
* [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion */
|
||||
* [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion ***/
|
||||
user_pref("permissions.delegation.enabled", false);
|
||||
/* 2624: enable "window.name" protection [FF82+]
|
||||
* If a new page from another domain is loaded into a tab, then window.name is set to an empty string. The original
|
||||
* string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks ***/
|
||||
user_pref("privacy.window.name.update.enabled", true);
|
||||
* string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks
|
||||
* [TEST] https://arkenfox.github.io/TZP/tests/windownamea.html ***/
|
||||
user_pref("privacy.window.name.update.enabled", true); // [DEFAULT: true FF86+]
|
||||
/* 2625: disable bypassing 3rd party extension install prompts [FF82+]
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1659530,1681331 ***/
|
||||
user_pref("extensions.postDownloadThirdPartyPrompt", false);
|
||||
|
||||
/** DOWNLOADS ***/
|
||||
/* 2650: discourage downloading to desktop
|
||||
@ -1200,8 +1205,6 @@ user_pref("privacy.window.name.update.enabled", true);
|
||||
user_pref("browser.download.useDownloadDir", false);
|
||||
/* 2652: disable adding downloads to the system's "recent documents" list ***/
|
||||
user_pref("browser.download.manager.addToRecentDocs", false);
|
||||
/* 2653: disable hiding mime types (Options>General>Applications) not associated with a plugin ***/
|
||||
user_pref("browser.download.hide_plugins_without_extensions", false);
|
||||
/* 2654: disable "open with" in download dialog [FF50+] [SETUP-HARDEN]
|
||||
* This is very useful to enable when the browser is sandboxed (e.g. via AppArmor)
|
||||
* in such a way that it is forbidden to run external applications.
|
||||
@ -1245,12 +1248,18 @@ user_pref("security.dialog_enable_delay", 700);
|
||||
accessible to websites except shared/service workers where the cookie setting *must* be "Allow"
|
||||
***/
|
||||
user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!");
|
||||
/* 2701: disable 3rd-party cookies and site-data [SETUP-WEB]
|
||||
* 0=Accept cookies and site data, 1=(Block) All third-party cookies, 2=(Block) All cookies,
|
||||
* 3=(Block) Cookies from unvisited websites, 4=(Block) Cross-site and social media trackers (default)
|
||||
* [NOTE] You can set exceptions under site permissions or use an extension
|
||||
/* 2701: disable or isolate 3rd-party cookies and site-data [SETUP-WEB]
|
||||
* 0 = Accept cookies and site data
|
||||
* 1 = (Block) All third-party cookies
|
||||
* 2 = (Block) All cookies
|
||||
* 3 = (Block) Cookies from unvisited websites
|
||||
* 4 = (Block) Cross-site tracking cookies (default)
|
||||
* 5 = (Isolate All) Cross-site cookies (TCP: Total Cookie Protection / dFPI: dynamic FPI) [1] (FF86+)
|
||||
* Option 5 with FPI enabled (4001) is ignored and not shown, and option 4 used instead
|
||||
* [NOTE] You can set cookie exceptions under site permissions or use an extension
|
||||
* [NOTE] Enforcing category to custom ensures ETP related prefs are always honored
|
||||
* [SETTING] Privacy & Security>Enhanced Tracking Protection>Custom>Cookies ***/
|
||||
* [SETTING] Privacy & Security>Enhanced Tracking Protection>Custom>Cookies
|
||||
* [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/ ***/
|
||||
user_pref("network.cookie.cookieBehavior", 1);
|
||||
user_pref("browser.contentblocking.category", "custom");
|
||||
/* 2702: set third-party cookies (if enabled, see 2701) to session-only
|
||||
@ -1264,12 +1273,23 @@ user_pref("network.cookie.thirdparty.nonsecureSessionOnly", true); // [FF58+]
|
||||
* [NOTE] The setting below is disabled (but not changed) if you block all cookies (2701 = 2)
|
||||
* [SETTING] Privacy & Security>Cookies and Site Data>Delete cookies and site data when Firefox is closed ***/
|
||||
// user_pref("network.cookie.lifetimePolicy", 2);
|
||||
/* 2710: disable DOM (Document Object Model) Storage
|
||||
/* 2710: enable Enhanced Tracking Protection (ETP) in all windows
|
||||
* [SETTING] Privacy & Security>Enhanced Tracking Protection>Custom>Tracking content
|
||||
* [SETTING] to add site exceptions: Urlbar>ETP Shield
|
||||
* [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/
|
||||
user_pref("privacy.trackingprotection.enabled", true);
|
||||
/* 2711: enable various ETP lists ***/
|
||||
user_pref("privacy.trackingprotection.socialtracking.enabled", true);
|
||||
// user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true]
|
||||
// user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true]
|
||||
/* 2720: disable DOM (Document Object Model) Storage
|
||||
* [WARNING] This will break a LOT of sites' functionality AND extensions!
|
||||
* You are better off using an extension for more granular control ***/
|
||||
// user_pref("dom.storage.enabled", false);
|
||||
/* 2730: disable offline cache ***/
|
||||
user_pref("browser.cache.offline.enable", false);
|
||||
/* 2730: enforce no offline cache storage (appCache)
|
||||
* The API is easily fingerprinted, use the "storage" pref instead ***/
|
||||
// user_pref("browser.cache.offline.enable", false);
|
||||
user_pref("browser.cache.offline.storage.enable", false); // [FF71+] [DEFAULT: false FF84+]
|
||||
/* 2740: disable service worker cache and cache storage
|
||||
* [NOTE] We clear service worker cache on exiting Firefox (see 2803)
|
||||
* [1] https://w3c.github.io/ServiceWorker/#privacy ***/
|
||||
@ -1290,8 +1310,8 @@ user_pref("dom.storage.next_gen", true);
|
||||
|
||||
/*** [SECTION 2800]: SHUTDOWN
|
||||
You should set the values to what suits you best.
|
||||
- "Offline Website Data" includes appCache (2730), localStorage (2710),
|
||||
service worker cache (2740), and QuotaManager (IndexedDB (2720), asm-cache)
|
||||
- "Offline Website Data" includes appCache (2730), localStorage (2720),
|
||||
service worker cache (2740), and QuotaManager (IndexedDB, asm-cache)
|
||||
- In both 2803 + 2804, the 'download' and 'history' prefs are combined in the
|
||||
Firefox interface as "Browsing & Download History" and their values will be synced
|
||||
***/
|
||||
@ -1364,19 +1384,22 @@ user_pref("privacy.sanitize.timeSpan", 0);
|
||||
user_pref("_user.js.parrot", "4000 syntax error: the parrot's pegged out");
|
||||
/* 4001: enable First Party Isolation [FF51+]
|
||||
* [SETUP-WEB] May break cross-domain logins and site functionality until perfected
|
||||
* [1] https://bugzilla.mozilla.org/1260931
|
||||
* [2] https://bugzilla.mozilla.org/1299996 [META] ***/
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1260931,1299996 ***/
|
||||
user_pref("privacy.firstparty.isolate", true);
|
||||
/* 4002: enforce FPI restriction for window.opener [FF54+]
|
||||
* [NOTE] Setting this to false may reduce the breakage in 4001
|
||||
* FF65+ blocks postMessage with targetOrigin "*" if originAttributes don't match. But
|
||||
* to reduce breakage it ignores the 1st-party domain (FPD) originAttribute, see [2],[3]
|
||||
* to reduce breakage it ignores the 1st-party domain (FPD) originAttribute [2][3]
|
||||
* The 2nd pref removes that limitation and will only allow communication if FPDs also match.
|
||||
* [1] https://bugzilla.mozilla.org/1319773#c22
|
||||
* [2] https://bugzilla.mozilla.org/1492607
|
||||
* [3] https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage ***/
|
||||
// user_pref("privacy.firstparty.isolate.restrict_opener_access", true); // [DEFAULT: true]
|
||||
// user_pref("privacy.firstparty.isolate.block_post_message", true);
|
||||
/* 4003: enable scheme with FPI [FF78+]
|
||||
* [NOTE] Experimental: existing data and site permissions are incompatible
|
||||
* and some site exceptions may not work e.g. HTTPS-only mode (see 1244) ***/
|
||||
// user_pref("privacy.firstparty.isolate.use_site", true);
|
||||
|
||||
/*** [SECTION 4500]: RFP (RESIST FINGERPRINTING)
|
||||
RFP covers a wide range of ongoing fingerprinting solutions.
|
||||
@ -1452,8 +1475,7 @@ user_pref("privacy.resistFingerprinting", true);
|
||||
/* 4502: set new window sizes to round to hundreds [FF55+] [SETUP-CHROME]
|
||||
* Width will round down to multiples of 200s and height to 100s, to fit your screen.
|
||||
* The override values are a starting point to round from if you want some control
|
||||
* [1] https://bugzilla.mozilla.org/1330882
|
||||
* [2] https://hardware.metrics.mozilla.com/ ***/
|
||||
* [1] https://bugzilla.mozilla.org/1330882 ***/
|
||||
// user_pref("privacy.window.maxInnerWidth", 1000);
|
||||
// user_pref("privacy.window.maxInnerHeight", 1000);
|
||||
/* 4503: disable mozAddonManager Web API [FF57+]
|
||||
@ -1461,7 +1483,7 @@ user_pref("privacy.resistFingerprinting", true);
|
||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988 ***/
|
||||
user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF]
|
||||
/* 4504: enable RFP letterboxing [FF67+]
|
||||
* Dynamically resizes the inner window by applying margins in stepped ranges, see [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. The format is
|
||||
* "width1xheight1, width2xheight2, ..." (e.g. "800x600, 1000x1000, 1600x900")
|
||||
* [SETUP-WEB] This does NOT require RFP (see 4501) **for now**, so if you're not using 4501, or you are but
|
||||
@ -1556,8 +1578,9 @@ user_pref("webgl.enable-debug-renderer-info", false);
|
||||
// 0=no-preference, 1=reduce
|
||||
user_pref("ui.prefersReducedMotion", 0); // [HIDDEN PREF]
|
||||
// FF64+
|
||||
// 4615: [2516] disable PointerEvents
|
||||
// 4615: [2516] disable PointerEvents [FF86 or lower]
|
||||
// [1] https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent
|
||||
// [-] https://bugzilla.mozilla.org/1688105
|
||||
user_pref("dom.w3c_pointer_events.enabled", false);
|
||||
// * * * /
|
||||
// FF67+
|
||||
@ -1570,8 +1593,8 @@ user_pref("ui.use_standins_for_native_colors", true);
|
||||
// 0=light, 1=dark : This overrides your OS value
|
||||
user_pref("ui.systemUsesDarkTheme", 0); // [HIDDEN PREF]
|
||||
// FF80+
|
||||
// 4618: limit font visbility (non-ANDROID) [FF79+]
|
||||
// Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts, see [1]
|
||||
// 4618: limit font visibility (non-ANDROID) [FF79+]
|
||||
// Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1]
|
||||
// 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts
|
||||
// [NOTE] Bundled fonts are auto-allowed
|
||||
// [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc
|
||||
@ -1597,10 +1620,11 @@ user_pref("_user.js.parrot", "4700 syntax error: the parrot's taken 'is last bow
|
||||
// user_pref("general.useragent.override", ""); // [HIDDEN PREF]
|
||||
|
||||
/*** [SECTION 5000]: PERSONAL
|
||||
Non-project related but useful. If any of these interest you, add them to your overrides ***/
|
||||
Non-project related but useful. If any of these interest you, add them to your overrides
|
||||
To save some overrides, we've made a few active as they seem to be universally used ***/
|
||||
user_pref("_user.js.parrot", "5000 syntax error: this is an ex-parrot!");
|
||||
/* WELCOME & WHAT's NEW NOTICES ***/
|
||||
// user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switch
|
||||
user_pref("browser.startup.homepage_override.mstone", "ignore"); // master switch
|
||||
// user_pref("startup.homepage_welcome_url", "");
|
||||
// user_pref("startup.homepage_welcome_url.additional", "");
|
||||
// user_pref("startup.homepage_override_url", ""); // What's New page after updates
|
||||
@ -1619,6 +1643,7 @@ user_pref("_user.js.parrot", "5000 syntax error: this is an ex-parrot!");
|
||||
// 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+]
|
||||
@ -1626,15 +1651,15 @@ user_pref("_user.js.parrot", "5000 syntax error: this is an ex-parrot!");
|
||||
// user_pref("ui.key.menuAccessKey", 0); // disable alt key toggling the menu bar [RESTART]
|
||||
// user_pref("view_source.tab", false); // view "page/selection source" in a new window [FF68+, FF59 and under]
|
||||
/* UX FEATURES: disable and hide the icons and menus ***/
|
||||
// user_pref("browser.messaging-system.whatsNewPanel.enabled", false); // What's New [FF69+]
|
||||
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("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+]
|
||||
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+]
|
||||
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)
|
||||
@ -1655,14 +1680,26 @@ user_pref("_user.js.parrot", "9999 syntax error: the parrot's deprecated!");
|
||||
// [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/20025
|
||||
// [-] https://bugzilla.mozilla.org/1603712
|
||||
user_pref("intl.charset.fallback.override", "windows-1252");
|
||||
// * * * /
|
||||
// FF82
|
||||
// 0206: disable geographically specific results/search engines e.g. "browser.search.*.US"
|
||||
// i.e. ignore all of Mozilla's various search engines in multiple locales
|
||||
// [-] https://bugzilla.mozilla.org/1619926
|
||||
user_pref("browser.search.geoSpecificDefaults", false);
|
||||
user_pref("browser.search.geoSpecificDefaults.url", "");
|
||||
// * * * /
|
||||
// FF86
|
||||
// 1205: disable SSL Error Reporting
|
||||
// [1] https://firefox-source-docs.mozilla.org/browser/base/sslerrorreport/preferences.html
|
||||
// [-] https://bugzilla.mozilla.org/1681839
|
||||
user_pref("security.ssl.errorReporting.automatic", false);
|
||||
user_pref("security.ssl.errorReporting.enabled", false);
|
||||
user_pref("security.ssl.errorReporting.url", "");
|
||||
// 2653: disable hiding mime types (Options>General>Applications) not associated with a plugin
|
||||
// [-] https://bugzilla.mozilla.org/1581678
|
||||
user_pref("browser.download.hide_plugins_without_extensions", false);
|
||||
// FF87
|
||||
// 0105d: disable Activity Stream recent Highlights in the Library [FF57+]
|
||||
// [-] https://bugzilla.mozilla.org/1689405
|
||||
// user_pref("browser.library.activity-stream.enabled", false);
|
||||
// ***/
|
||||
|
||||
/* END: internal custom pref to test for syntax errors ***/
|
||||
|
BIN
wikipiki/parseError.png
Normal file
BIN
wikipiki/parseError.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
Reference in New Issue
Block a user