Canvas-відбиток перетворює відмінності рендерингу однакових команд на різному обладнанні та ПЗ на ідентифікатор і рідко використовується окремо. Розумний захист — не змінювати значення щоразу, а підтримувати взаємну узгодженість характеристик середовища.
Принцип Canvas-відбитка нескладний, але багато поширених способів протидії працюють у напрямку, протилежному до корисного.
Однакові команди дають різні результати на різних пристроях
Canvas — це графічний компонент HTML5, на якому вебсторінка може за допомогою скриптів малювати фігури й текст. Однакові команди малювання на різних пристроях можуть давати невеликі відмінності рендерингу через такі низькорівневі чинники, як операційна система, версія браузера, набір шрифтів і драйвер відеокарти. На око ці відмінності майже непомітні, але після експорту вмісту полотна як даних вони перетворюються на значення, які можна порівнювати.
Процес приблизно такий: сторінка спочатку малює графіку й текст, а потім за допомогою toDataURL() експортує результат у рядок Base64. Цей рядок можна використовувати як ідентифікатор. Різні пристрої дають різні результати експорту, тому в багатьох випадках значення є унікальним. Видалення cookie на нього не впливає, як і очищення кешу.
Його рідко використовують окремо
Окреме значення Canvas має обмежену користь і може змінюватися після оновлення браузера або графічного драйвера. На практиці Canvas зазвичай поєднують з іншими характеристиками та звіряють їх між собою:
- Графічні дані, як-от WebGL, список шрифтів і модель відеокарти
- Дані середовища, як-от UA, часовий пояс, мова й роздільна здатність екрана
- Дані сесії, як-от cookie, локальне сховище й мережевий вихід
Таке групування потрібне для перевірки узгодженості. Кожна характеристика окремо може виглядати нормально, але суперечності стають помітними в сукупності: часовий пояс встановлено на США, список мов містить лише китайську, а значення Canvas відповідає інтегрованій графіці, хоча UA заявляє новий пристрій високого класу. Платформі не потрібно доводити, хто ви. Достатньо помітити, що цей набір характеристик не схожий на реальну машину.
Вимкнення робить середовище помітнішим
Перша реакція багатьох людей — вимкнути Canvas, але це може дати прямо протилежний результат.
Майже всі браузери звичайних користувачів підтримують Canvas. Середовище, яке явно його не підтримує, статистично є рідкісним і фактично показує, що до нього застосовано спеціальну обробку. Є й практичніша проблема: багато сайтів використовують Canvas для обрізання зображень, графіків і відображення CAPTCHA. Після вимкнення можуть ламатися функції сторінки, додаючи ще одну аномалію.
Інший підхід — щоразу використовувати новий випадковий набір значень. Тут виникає та сама проблема: відбитки реальних пристроїв стабільні. Середовище, яке змінюється під час кожного відвідування, поводиться не як звичайний пристрій, тому його може бути легше виділити й позначити. Сама рандомізація може бути розпізнаваним сигналом.
Розумний напрям — внутрішня узгодженість
Ближче до реальної поведінки — зробити характеристики всередині середовища узгодженими, а загальний профіль неаномальним, замість того щоб змінювати все під час кожного відвідування.
На практиці характеристики мають підтримувати одна одну: часовий пояс, мова та географічне розташування вихідної IP-адреси повинні логічно збігатися. Пристрій, заявлений у UA, і графічні можливості, які показують Canvas та WebGL, мають належати до зіставного рівня. Середовище того самого акаунта повинно залишатися стабільним у довгостроковій перспективі без помітних змін під час повторних відвідувань. Не варто покладатися на розширення, які просто вимикають окрему функцію: вони часто створюють ще помітніші ознаки. За можливості запускайте менше сторонніх скриптів, щоб зменшити поверхню збору даних.
Якщо кілька середовищ мають відрізнятися одне від одного, це завдання ізоляції середовищ. Інструменти на кшталт PurpleMark під час ізоляції кількох акаунтів зазвичай призначають кожному акаунту фіксоване середовище, а не змушують параметри випадково змінюватися, бо для платформ насамперед важливо, чи залишається набір характеристик стабільним і логічно узгодженим.
Підсумок
Canvas дає змогу відстежувати, тому що перетворює невеликі відмінності апаратного й програмного забезпечення на стабільний порівнюваний рядок. Ефективний захист — не вимикати Canvas і не змушувати значення хаотично змінюватися, а узгодити його з іншими характеристиками того самого середовища. Виглядати звичайно безпечніше, ніж виглядати незвично.


