Browser fingerprinting

Анонимная идентификация браузеров

Browser Fingerprint

Анонимная идентификация браузеров

Валентин Васильев

FrontendConf 2015

Кто я

  1. github.com/Valve
  2. Machinio.com
  3. JavaScript, Ruby, Java, Rust

Что такое

Browser Fingerprint?

Присвоение уникального идентификатора браузеру

Для чего?

Давайте просто использовать cookie?

Evercookie?

Evercookie

HTTP Cookies

Evercookie

Flash Cookies

(Local Shared Objects)

Evercookie

Silverlight Cookies

(Isolated Storage)

Evercookie

PNG Cookies

(Canvas + PNG + Caching)

Evercookie

HTML5

Session Storage

Local Storage

Indexed DB

Evercookie

ETag header

Java persistence

Evercookie

  1. HTTP Cookies
  2. Flash Cookies
  3. Silverlight Isolated Storage
  4. PNG + Canvas
  5. Session Storage, Local Storage, Indexed DB
  6. ETag
  7. Java Persistence

Evercookie — это хорошо, но...

Incognito Режим

FingerprintJS

Используется в:




FingerprintJS

				navigator.userAgent
			
Mozilla/5.0 (Macintosh; Intel Mac OS X...

FingerprintJS

				navigator.language
			
en-US

FingerprintJS

			new Date().getTimezoneOffset()
		

-180

FingerprintJS

				[screen.height, screen.width]
			
[1200,1920]

FingerprintJS

				screen.colorDepth
			
24

HTML5 support

User/Platform specific data

Plugins info

			Native Client::application/x-nacl...
			Chrome PDF Viewer::application/pdf~pdf...
			Shockwave Flash::Shockwave Flash 17.0 r0...
      Google Talk Plugin::Version 5.41.0.0...
			Java Applet Plug-in::application/x-java-applet..
			...
		

Canvas Fingerprint

			canvas.toDataURL()
			data:image/png;base64,iVBORw0KGgoAAAANSU...
		

FingerprintJS

V1 — недостатки

FingerprintJS v2

Under Development

2015 - ...

V2 — Fuzzy Hashing

			navigator.userAgent
		
			Mozilla/5.0 (Intel Mac OS X) ... Chrome/42.0.2311
			Mozilla/5.0 (Intel Mac OS X) ... Chrome/41.0.2272
			Mozilla/5.0 (Intel Mac OS X) ... Chrome/40.0.2214
			Mozilla/5.0 (Intel Mac OS X) ... Chrome/39.0.2171
			Mozilla/5.0 (Intel Mac OS X) ... Chrome/38.0.2125
		

V2 — Определение шрифтов

			Flash (916 byte SWF) — все установленные
			CSS + JavaScript — ~500
		

V2 — WebGL fingerprint

			gl.DEPTH_BITS
			gl.MAX_CUBE_MAP_TEXTURE_SIZE
			gl.MAX_FRAGMENT_UNIFORM_VECTORS
			gl.MAX_RENDERBUFFER_SIZE
			gl.MAX_TEXTURE_SIZE
			gl.SHADING_LANGUAGE_VERSION
			... много других
		

V2 — В разработке

			WebRTC fingerprinting
			Больше плагинов для IE
			Больше информации об операционной системе
			Определение нескольких мониторов
			Данные о ядре Linux (Flash)
			...
		

Вопросы?

Валентин Васильев

        is.gd/fplinks