| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Entropy Source | Access | Description | Relevant Pref(s) | Firefox Bug | Tor Bug | In FingerprintJS2? | In AmIUnique? | In Panopticlick? | |||||||||||||||||||
2 | ||||||||||||||||||||||||||||
3 | Deterministic Device Information | |||||||||||||||||||||||||||
4 | Browser Plugins | navigator.plugins | Lists installed plugins and version numbers (now just Flash) | Y | Y | Y | ||||||||||||||||||||||
5 | navigator.mimeTypes | Reveals installed plugins. | [DOM] navigator.mimetypes.length = 0 | |||||||||||||||||||||||||
6 | ||||||||||||||||||||||||||||
7 | System Fonts | JS/CSS | HTMLElement.offsetWidth HTMLElement.offsetHeight | https://bugzilla.mozilla.org/show_bug.cgi?id=1336208 https://bugzilla.mozilla.org/show_bug.cgi?id=1121643 | https://trac.torproject.org/projects/tor/ticket/18097 https://trac.torproject.org/projects/tor/ticket/13313 | Y | Y | Y | ||||||||||||||||||||
8 | Canvas API | canvasRenderingContext2D.measureText canvasRenderingContext2D.font | https://bugzilla.mozilla.org/show_bug.cgi?id=1336208 https://bugzilla.mozilla.org/show_bug.cgi?id=1121643 | https://trac.torproject.org/projects/tor/ticket/18097 https://trac.torproject.org/projects/tor/ticket/13313 | ||||||||||||||||||||||||
9 | ||||||||||||||||||||||||||||
10 | OS Vendor/Version | navigator.platform | OS vendor | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 https://bugzilla.mozilla.org/show_bug.cgi?id=1383495 | Y | Y | Y | |||||||||||||||||||||
11 | navigator.oscpu | OS vendor and version number | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 | |||||||||||||||||||||||||
12 | navigator.appVersion | OS vendor | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 | |||||||||||||||||||||||||
13 | System Color Scheme | System colors are discoverable via CSS and canvas (https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#System_Colors) http://browserspy.dk/colors.php | ui.use_standins_for_native_colors = true | https://trac.torproject.org/projects/tor/ticket/6786 | ||||||||||||||||||||||||
14 | Toolbar, Titlebar, Widget Size | OSs have different size UI widgets/chrome. This is discoverable through "inner" size queries | https://bugzilla.mozilla.org/show_bug.cgi?id=1397996 | |||||||||||||||||||||||||
15 | navigator.userAgent | User agent contains vendor and version | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 | |||||||||||||||||||||||||
16 | resource:// | https://browserleaks.com/firefox#more | https://bugzilla.mozilla.org/show_bug.cgi?id=863246 https://bugzilla.mozilla.org/show_bug.cgi?id=503221 | https://trac.torproject.org/projects/tor/ticket/8725 | ||||||||||||||||||||||||
17 | Math routines | High-precision mathematical functions have small differences between OSs | https://bugzilla.mozilla.org/show_bug.cgi?id=531915 | https://trac.torproject.org/projects/tor/ticket/13018 | ||||||||||||||||||||||||
18 | JS Date Object | Calls like new Date().toLocaleFormat() produce different Date formatting, depending on the platform | https://bugzilla.mozilla.org/show_bug.cgi?id=1409973 | https://trac.torproject.org/projects/tor/ticket/15473 | ||||||||||||||||||||||||
19 | Canvas Emoji Detection | https://www.bamsoftware.com/papers/fontfp.pdf | ||||||||||||||||||||||||||
20 | Network connection API | https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability | dom.network.enabled | |||||||||||||||||||||||||
21 | Sensor API | https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability | device.sensors.enabled | |||||||||||||||||||||||||
22 | CSS line-height | Line height is different on different platforms | https://bugzilla.mozilla.org/show_bug.cgi?id=1397994 | https://trac.torproject.org/projects/tor/ticket/23104 | ||||||||||||||||||||||||
23 | Media Support | Different OSes may have differing support for HTML5 media. | https://trac.torproject.org/projects/tor/ticket/13543 | |||||||||||||||||||||||||
24 | ||||||||||||||||||||||||||||
25 | Browser Vendor/Version | navigator.userAgent | UA string contains version information | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 | Y | Y | Y | |||||||||||||||||||||
26 | navigator.buildId | Build identifier for the browser | https://bugzilla.mozilla.org/show_bug.cgi?id=1333651 https://bugzilla.mozilla.org/show_bug.cgi?id=583181 | |||||||||||||||||||||||||
27 | resource:// | https://browserleaks.com/firefox#more | https://bugzilla.mozilla.org/show_bug.cgi?id=863246 https://bugzilla.mozilla.org/show_bug.cgi?id=503221 | https://trac.torproject.org/projects/tor/ticket/8725 | ||||||||||||||||||||||||
28 | supported APIs | The set of APIs exposed to JS will vary by Browser version (https://browserleaks.com/features) | ||||||||||||||||||||||||||
29 | ||||||||||||||||||||||||||||
30 | Screen Properties | window.screen | width, height, colorDepth | Y | Y | Y | ||||||||||||||||||||||
31 | CSS Media Queries | CSS query can be used to query the window size and screen size. | https://bugzilla.mozilla.org/show_bug.cgi?id=418986 | https://trac.torproject.org/projects/tor/ticket/2875 | ||||||||||||||||||||||||
32 | Touch API | Screen size: Touch.screenX/Y, Touch.clientX/Y Device touch support: if screen supports touch, if screen can sense pressure | https://bugzilla.mozilla.org/show_bug.cgi?id=1382499 | https://trac.torproject.org/projects/tor/ticket/10286 | ||||||||||||||||||||||||
33 | window.devicePixelRatio | Reveals screen pixel ratio | https://trac.torproject.org/projects/tor/ticket/13875 | |||||||||||||||||||||||||
34 | ||||||||||||||||||||||||||||
35 | Input Devices | Gamepad API | Query videogame controllers and extract their USB device IDs and other vendor info strings, without user interaction | dom.gamepad.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1337161 | https://trac.torproject.org/projects/tor/ticket/13023 | N | N | N | |||||||||||||||||||
36 | Touch API | |||||||||||||||||||||||||||
37 | navigator.maxTouchPoints | Returns the maximum number of touch points supported by the device | ||||||||||||||||||||||||||
38 | Pointer Events | Reveals if user is using a mouse, pen, or touch input -- plus additional detail on geometry of device (e.g. pointer size) | https://bugzilla.mozilla.org/show_bug.cgi?id=1363508 | N | N | N | ||||||||||||||||||||||
39 | ||||||||||||||||||||||||||||
40 | Media Devices | Media Devices API (enumerateDevices() -- no permission) | Gives the number of camera & mic devices. Devices have per-top-level-origin unique IDs which reset after cookie clears or when the browser is rebooted. | media.peerconnection.enabled = false media.navigator.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1372073 | https://trac.torproject.org/projects/tor/ticket/16328 | N | N | N | |||||||||||||||||||
41 | Media Devices API (getUserMedia() -- requires permission) | Once permission is granted, all device information is available (e.g., device resolution). See: https://bugzilla.mozilla.org/show_bug.cgi?id=1372073#c65 | https://bugzilla.mozilla.org/show_bug.cgi?id=1372073 | N | N | N | ||||||||||||||||||||||
42 | ||||||||||||||||||||||||||||
43 | Graphics Stack | Canvas API | CanvasRenderingContext2D Canvas renderings appear to be tied to underlying drivers and graphics cards. See: http://w2spconf.com/2012/papers/w2sp12-final4.pdf | https://bugzilla.mozilla.org/show_bug.cgi?id=967895 | https://trac.torproject.org/projects/tor/ticket/12684 | Y | Y | Y | ||||||||||||||||||||
44 | WebGL API | getParameter(), getSupportedExtensions(), getExtension() WebGL capabilities and supported extensions reveal the device's graphics processor, properties of the processor, and properties of the webgl context. | webgl.disable-extenstions = true webgl.min_capability_mode = true webgl.disable-fail-if-major-performance-caveat = true | https://bugzilla.mozilla.org/show_bug.cgi?id=1217290 | https://trac.torproject.org/projects/tor/ticket/6370 https://trac.torproject.org/projects/tor/ticket/16005 | Y | Y | Y | ||||||||||||||||||||
45 | WebGL API | CanvasRenderingContext3D http://w2spconf.com/2012/papers/w2sp12-final4.pdf | https://bugzilla.mozilla.org/show_bug.cgi?id=1217290 | https://trac.torproject.org/projects/tor/ticket/6370 https://trac.torproject.org/projects/tor/ticket/16005 | Y | Y | Y | |||||||||||||||||||||
46 | ||||||||||||||||||||||||||||
47 | Keyboard Layout | KeyboardEvent.code KeyboardEvent.keyCode | KeyboardEvents provide a way for a website to find out information about the keyboard layout of its visitors. There are several dimensions to this fingerprinting vector. https://developers.google.com/web/updates/2016/04/keyboardevent-keys-codes | https://bugzilla.mozilla.org/show_bug.cgi?id=1222285 | https://trac.torproject.org/projects/tor/ticket/15646 https://trac.torproject.org/projects/tor/ticket/17009 | N | N | N | ||||||||||||||||||||
48 | ||||||||||||||||||||||||||||
49 | Audio API | AudioContext OfflineAudioContext | Audio context seems to roughly correspond to OS, but more research is needed. | dom.webaudio.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1288359 | https://trac.torproject.org/projects/tor/ticket/13017 | N | N | N | |||||||||||||||||||
50 | ||||||||||||||||||||||||||||
51 | Locale | resource:// | https://browserleaks.com/firefox#more | Y | Y | Y | ||||||||||||||||||||||
52 | navigator.language navigator.languages | intl.accept_languages = "en-us, en" intl.accept_charsets = "iso-8859-1,*,utf-8" intl.charsetmenu.browser.cache = "UTF-8" javascript.default_locale = "en-US" | ||||||||||||||||||||||||||
53 | Date Object | Date().toLocaleString() Date().toLocaleFormat() Intl.DateTimeFormat().format(new Date())) | https://bugzilla.mozilla.org/show_bug.cgi?id=1330890 https://bugzilla.mozilla.org/show_bug.cgi?id=1409973 | |||||||||||||||||||||||||
54 | Accept-Language | HTTP Header | https://bugzilla.mozilla.org/show_bug.cgi?id=1039069 | |||||||||||||||||||||||||
55 | <isindex> HTML Element | Inserts form with label that contains locale | https://bugzilla.mozilla.org/show_bug.cgi?id=1330892 | https://trac.torproject.org/projects/tor/ticket/18914 | ||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||||
57 | Connection Status | navigator.onLine | Boolean value if machine is online/offline | network.manage-offline-status = false | N | N | N | |||||||||||||||||||||
58 | navigator.connection | Exposes network type (cellular, wifi, etc) and estimated speed (4g, 3g, 2g, etc). See Network Information API. | dom.netinfo.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1372072 | ||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||||
60 | Device Sensors | (Generic) | Sensors readouts may have fingerprintable differences. Sensor data can be used to fingerprint a user's motion and surroundings. | device.sensors.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1369319 | https://trac.torproject.org/projects/tor/ticket/21609 | N | N | N | |||||||||||||||||||
61 | Ambient Light Sensor | |||||||||||||||||||||||||||
62 | Accelerometer | |||||||||||||||||||||||||||
63 | Device Orientation | |||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||
65 | Speech Synthesis Voices | speechSynthesis.getVoices() | May a fingerprinting vector through computer-specific speech packages which are exposed in an enumeratable fashion through speechSynthesis.getVoices(). | media.webspeech.synth.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1333641 https://bugzilla.mozilla.org/show_bug.cgi?id=1233846 | https://trac.torproject.org/projects/tor/ticket/10283 | N | N | N | |||||||||||||||||||
66 | ||||||||||||||||||||||||||||
67 | Geolocation | navigator.geolocation object | Allows a site to request fine grained geolocation (latitude and logitude). Has a permission prompt. | geo.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1372069 | N | N | N | ||||||||||||||||||||
68 | ||||||||||||||||||||||||||||
69 | CPU | navigator.hardwareConcurrency | Reveals the number of cores/threads of a CPU | dom.maxHardwareConcurrency | https://bugzilla.mozilla.org/show_bug.cgi?id=1360039 | https://trac.torproject.org/projects/tor/ticket/21675 | Y | N | N | |||||||||||||||||||
70 | ||||||||||||||||||||||||||||
71 | Network Attacks | |||||||||||||||||||||||||||
72 | Open Ports | WebSockets or XHR | By using either WeSockets or XHR, remote content could enumerate the list of TCP ports open on 127.0.0.1, which can provide a very unique fingerprint of a machine. | network.proxy.no_proxies_on = "" | ||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||||
74 | NTLM/SPNEGO Leak hostname/username | Both NTLM and SPNEGO can leak the hostname, and current username. | https://bugzilla.mozilla.org/show_bug.cgi?id=1046421 | http://torpat.ch/12974 | ||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||||
76 | HTTP2 | |||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||||
78 | p0f Features | |||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||||
80 | Local IP Address | WebRTC dataChannel | The local IP address can be revealed by WebRTC data channels without user permission. For some users this will be globally unique. | |||||||||||||||||||||||||
81 | mDNS/Presentation API | The DoListAddresses() methods return local IP addresses | dom.presentation.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1382533 | https://trac.torproject.org/projects/tor/ticket/22165 | |||||||||||||||||||||||
82 | ||||||||||||||||||||||||||||
83 | OS Vendor/Version | TCP/IP | Reveals vendor and possibly version, despite spoofing in the application layer. (See: https://browserleaks.com/ip) | N/A | https://bugzilla.mozilla.org/show_bug.cgi?id=1409269 https://bugzilla.mozilla.org/show_bug.cgi?id=1404608 | |||||||||||||||||||||||
84 | ||||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||||
86 | Timing Attacks | |||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||||
88 | JavaScript Timing Precision | Precising timing can enable device feature discovery through timing sidechannels | https://bugzilla.mozilla.org/show_bug.cgi?id=1369303 | |||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||||
90 | JavaScript Performance | Performance API | Tor spoofs performance timing API, and disables resource timing API and user timing API for preventing timing analysis fingerprinting. | dom.enable_performance = false, dom.enable_resource_timing = false | ||||||||||||||||||||||||
91 | Video Statistics API | media.video_status.enabled = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1369309 | https://trac.torproject.org/projects/tor/ticket/15757 | ||||||||||||||||||||||||
92 | Animation API | High-res timestamp exposed | https://bugzilla.mozilla.org/show_bug.cgi?id=1382545 | https://trac.torproject.org/projects/tor/ticket/16337 | ||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||||
94 | CPU Benchmark | http://jcarlosnorte.com/security/2016/03/06/advanced-tor-browser-fingerprinting.html | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||||
96 | Network Speed | Measure the amount of time it takes to load a large, remote resource. | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||||
98 | User behavior / settings attacks | |||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||||
100 | Per-site Zoom Level | CSS and JavaScript have access to information about the zooming level. | browser.zoom.siteSpecific = false | https://bugzilla.mozilla.org/show_bug.cgi?id=1369357 |