Browser Fingerprinting | Blue Frog Docs

Browser Fingerprinting

Understanding browser fingerprinting, privacy implications, and how to ensure compliant tracking practices.

Browser Fingerprinting

What This Means

Browser fingerprinting is a tracking technique that collects device and browser attributes to create a unique identifier without using cookies. While it can be legitimate for fraud prevention, it raises privacy concerns when used for tracking without consent.

Common Fingerprinting Signals:

  • Canvas rendering patterns
  • WebGL renderer information
  • Audio context fingerprints
  • Font enumeration
  • Screen resolution and color depth
  • Installed plugins and extensions
  • User agent and HTTP headers

Impact Assessment

Privacy Impact

  • Difficult to Opt Out: Users can't easily prevent fingerprinting
  • Cross-Site Tracking: Can track users across domains
  • Regulatory Concern: May violate GDPR, CCPA requirements
  • Browser Blocking: Safari ITP and Firefox ETP actively combat fingerprinting

Business Impact

  • Cookie Alternatives: Provides tracking when cookies are blocked
  • Fraud Prevention: Legitimate use for bot detection
  • Compliance Risk: May result in regulatory penalties
  • User Trust: Can damage brand reputation

How to Diagnose

Check Your Site for Fingerprinting

Browser DevTools:

  1. Open Network tab
  2. Search for known fingerprinting libraries
  3. Look for canvas/WebGL access requests
  4. Check for unusual API calls

Common Fingerprinting Libraries:

  • FingerprintJS
  • ClientJS
  • ImprintJS
  • Evercookie

Code Pattern Search:

// Canvas fingerprinting pattern
canvas.toDataURL()
canvas.getContext('2d')

// WebGL fingerprinting
gl.getParameter(gl.RENDERER)
gl.getParameter(gl.VENDOR)

// Audio fingerprinting
OfflineAudioContext
AudioContext

Browser Privacy Tools

Test with privacy-focused browsers:

  • Firefox with Enhanced Tracking Protection
  • Safari with Intelligent Tracking Prevention
  • Brave with Shields enabled
  • Tor Browser for maximum privacy

Audit Third-Party Scripts

Check if any loaded scripts perform fingerprinting:

// Monitor suspicious API calls
const originalToDataURL = HTMLCanvasElement.prototype.toDataURL;
HTMLCanvasElement.prototype.toDataURL = function() {
  console.trace('Canvas fingerprinting detected');
  return originalToDataURL.apply(this, arguments);
};

General Fixes

1. Remove Unnecessary Fingerprinting

If your site uses fingerprinting scripts:

// REMOVE fingerprinting libraries not essential for security
// Example: Remove tracking-only fingerprinting
// import FingerprintJS from '@fingerprintjs/fingerprintjs';

// KEEP if used for fraud prevention
// Ensure it's disclosed and consent-based

If fingerprinting is necessary:

// Only fingerprint after explicit consent
if (hasConsent('fingerprinting')) {
  initializeFingerprintJS();
} else {
  useConsentedAlternatives();
}

3. Limit Fingerprinting Scope

For fraud prevention use cases:

// Use minimal signals
const fraudPreventionFingerprint = {
  // Essential for fraud detection
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
  language: navigator.language,
  // Avoid invasive signals
  // NO: canvas fingerprint
  // NO: WebGL renderer
  // NO: font enumeration
};

4. Privacy-Preserving Alternatives

Server-Side Detection:

// Server-side bot detection
const suspiciousPatterns = [
  req.headers['user-agent']?.includes('HeadlessChrome'),
  !req.headers['accept-language'],
  req.headers['x-forwarded-for']?.split(',').length > 5
];

Behavioral Analysis:

// Detect bots by behavior, not fingerprint
const humanBehavior = {
  mouseMoved: false,
  scrolled: false,
  timeOnPage: 0
};

// These signals are less privacy-invasive

5. Disclose Fingerprinting in Privacy Policy

If using fingerprinting:

## Device Information Collection

We collect certain device information for fraud prevention purposes:
- Screen resolution
- Timezone
- Browser language

This information helps protect your account from unauthorized access.
We do not use this information for advertising or tracking purposes.

Regulatory Compliance

GDPR Requirements

Under GDPR, fingerprinting typically requires:

  • Explicit consent for tracking purposes
  • Legitimate interest assessment for fraud prevention
  • Clear disclosure in privacy policy
  • Data minimization - collect only what's necessary

CCPA Requirements

Under CCPA:

  • Fingerprinting may constitute "sale" of personal information
  • Must honor "Do Not Sell" requests
  • Disclosure in privacy policy required

ePrivacy Directive

Under ePrivacy:

  • Fingerprinting is treated similarly to cookies
  • Consent required except for strictly necessary purposes
  • Must be disclosed to users

Browser Countermeasures

Safari ITP

  • Randomizes fingerprint signals
  • Blocks known fingerprinting scripts
  • Limits canvas API access

Firefox ETP

  • Blocks known fingerprinting domains
  • Reduces fingerprint surface
  • Warns about fingerprinting scripts

Chrome Privacy Sandbox

  • Planned fingerprinting restrictions
  • User Agent reduction
  • Privacy Budget proposals

Legitimate Use Cases

Fraud Prevention

  • Bot detection
  • Account takeover protection
  • Payment fraud prevention

Security

Accessibility

  • Device capability detection
  • Feature availability checking

Testing and Monitoring

Monitor for Fingerprinting

// Content Security Policy to monitor
Content-Security-Policy-Report-Only:
  script-src 'self' https://trusted.cdn.com;
  report-uri /csp-reports

Regular Audits

  1. Scan for fingerprinting libraries quarterly
  2. Review third-party script updates
  3. Test with privacy browsers
  4. Check for new tracking methods

Further Reading

// SYS.FOOTER