Prevent HTML canvas element from generating a unique identification key to protect user's privacy
This browser extension safeguards user privacy by preventing malicious scripts from using the HTML canvas element for user fingerprinting. It introduces slight changes to the data generated by the canvas element when specific methods are invoked, rendering it unusable for fingerprinting. In comparison to similar extensions, this one is lighter and employs a more efficient method to obstruct fingerprinting across all frame elements (top and subframes). The extension operates in three modes:
1. Random noise
2. Random noise (per page) to maintain a consistent identity within the current page session
3. Fixed noise to sustain a constant yet unique identity continuously
Key Features:
1. Minimal footprint fingerprint defender
2. Ability to block or disable fingerprinting on specific hostnames
3. Notification when canvas fingerprinting is detected
4. Option to disable notification for select or all hostnames
5. Compatibility with cross-origin (CORS) and sandboxed iframes (such as Disqus and Hangouts)
Notes:
This extension doesn't entirely block the canvas element. Instead, it modifies two methods to prevent the JavaScript engine from creating a unique identification key from this element.
What is Canvas Fingerprinting:
Canvas fingerprinting is a method among several browser fingerprinting techniques used for tracking online users. It enables websites to identify and monitor visitors by leveraging the HTML5 canvas element rather than browser cookies or similar means. This technique functions by exploiting the HTML5 canvas element. When a user visits a webpage, the fingerprinting script initially writes text using the preferred font and size and adds background colors. Subsequently, the script calls the Canvas API's ToDataURL method to retrieve canvas pixel data in dataURL format, essentially a Base64 encoded representation of binary pixel data. Lastly, the script hashes the text-encoded pixel data, creating a unique fingerprint.