The-OP / Fox

The Unlicense
161 stars 23 forks source link

privacy.resistFingerprinting #38

Closed dartraiden closed 8 years ago

dartraiden commented 8 years ago

На ру-борде упомянули, что якобы поддерживается настройка privacy.resistFingerprinting (не существующая по умолчанию), присвоение которой значения "true" блокирует определение сайтами размеров окна браузера с учётом баров и панелей. Таким образом, сайты могут определить лишь полный размер окна.

Есть идеи, где это можно потестировать на предмет "фейк/не фейк"? В https://mxr.mozilla.org/mozilla-central/source/modules/libpref/init/all.js я такой настройки не обнаружил.

The-OP commented 8 years ago

Да, в исходниках упоминается вроде. Проверить можно на ip-check.info. Или прямо из консоли: window.screen.width, window.outerHeight и т.п.

Кстати, эти штуки (и window.name) можно подделывать при помощи UserJS с @run-at document-start (Random Agent Spoofer, собственно, тоже инжектирует свой скрипт в начале загрузки страницы). Правда осмысленность подделки размеров именно окна находится под вопросом - скрипт может и по косвенным признакам понять, что его надувают.

Еще на ip-check почему-то рекомендуют делать inner size равным outer. Это лучше чем ничего, но наверное хуже чем, скажем, стандартным для заголовков и тубаров в самой распространенной Винде.

firefoxForUser commented 8 years ago

The-OP, А почему вы так напираете на подмену user agent? Идея конечно интересная, но на практике она работает только для сайтов, которые специально показывают контент только определённым браузерам. То есть сайтам непрофессиональным и откровенно плохо написанным.

Это много раз обсуждалось на многих форумах. Получается, что даже при парсинге некоторых свойств (например даты в текст) разные браузеры ведут себя по разному (видел где-то пример). Тоже касается и некоторых новшеств в js, которые могут быть в одних браузерах и не бытьв других. Так что настоящую версию и модель можно определить даже не касаясь специальных свойств описывающих браузер. И множество других мелких нюансов из-за которых собственно в Tor Project и выбрали маскировку под ВЕРСИЮ определенной МОДЕЛИ браузера, а не нечто случайное.

Так что выходит так, что эффект подмена user agent имеет только при при отключённом js. Но при отключенном js достаточно подменить строку user agent из about:config. Но даже в этом случае можно для определения версии использовать css свойства, которые появляются с каждой новой версией браузера и в разных браузерах они разные, в том числе с приставкой -moz или просто работающие чуть по другому (например могут иметь разные размеры отступов по умолчанию). Банальный сценарий: скрываем спец свойствами или сдвигаем за пределы экрана (используя разные размеры полей разных свойств) кнопку. Пользователь в разных браузерах увидит разные кнопки. Тоже можно проделать с разрешением экрана, когда каждому разрешению показывается своя кнопка и клик по ней отправляет текущий размер экрана. Ещё проще: подключаем каждому разрешению свою фоновую картинку элементам, смотрим лог запросов серверу и сопоставляем по ip/времени.

Я хочу сказать, что утверждать в описании дополнений можно только то, что оно ЧАСТИЧНО препятствует фингерпринтингу. И человек, который хотя бы немного почитал доки на официальных сайтах играючи определит user agent пользователя даже с отключенным js (если конечно пользователь будет взаимодействовать с сайтом).

К слову UAControl позволяет назначить подмену user agent по шаблонам для ссылок и назначить каждому разные подмены. Лучше чем User Agent Switcher.

Ещё к слову. Чтобы размер окна не определялся с учетом баров и панелей достаточно назначить любому бару/панели position:fixed. Что я собственно и написал когда-то в запросах на фичи в Tor Project. :) Из проблем при таком там мелочи, несколько кнопок на самих барах может чуть сдвинуться, пофиксить - пара сек.

Ещё к слову. Для панелей в Firefox обычно используется -mox-box, что лично мне не нравится.

The-OP commented 8 years ago

Я ни на что не напираю.

firefoxForUser commented 8 years ago

Значит мне показалось.

dartraiden commented 8 years ago

Потестировал. На актуальной 46-версии никакого влияния не оказывает, судя по всему. ip-check.info успешно определил как разрешение экрана, так и размер видимой области страницы.

The-OP commented 8 years ago

Теперь - оказывает. c1d02ae

h8nor commented 6 years ago

С выключенным параметрам дополнительно показывает SSL_session_id, Plugins, Mime types. Блокирует отпечатки, но не блокирует размеры окна. Существует ли другая настройка?

dartraiden commented 6 years ago

КМК, размеры окна грамотно проспуфить/заблокировать очень трудно, потому что их можно получить разными способами. В TorBrowser неспроста размер окна зафиксирован и его не рекомендуется менять.

h8nor commented 6 years ago

@dartraiden, благодарю. Теперь понял, что патчи -- это не user.js

dartraiden commented 6 years ago

Патчи это патчи на код, да. Их накладывают перед сборкой. user.js - это настройки.

Я по-прежнему склоняюсь к идее использовать TorBrowser без Tor, потому что некоторые вещи просто невозможно сделать настройками.