Польский специалист по безопасности Кржиштоф Котович (Krzysztof Kotowicz) показал несколько строчек Javascript, с помощью которых можно получить список расширений, установленных у пользователя в браузере Chrome (или любом другом браузере семейства Chromium).
Рабочее демо (проверка наличия/отсутствия у пользователя десятка самых популярных расширений)
Этот скрипт нельзя в назвать вредоносной программой в полном смысле этого смысла, но всё-таки он представляет собой потенциальную опасность, потому что такими методами злоумышленник может осуществлять «фингерпринтинг» юзеров, то есть идентифицировать отдельных пользователей с целью слежения. Обычно для этих целей используют файлы cookies, но если они отключены в браузере, то можно использовать и вот такие более экзотические способы.
Фингерпринтинг означает получение уникального «отпечатка» компьютера пользователя, то есть совокупности информации из user-agent браузера, сведений о версии операционной системы, разрешении экрана и другой информации. Каждый по отдельности такой факт совершенно не оригинален, но все вместе они представляют собой уникальное сочетание фактов, которое можно сравнить с «отпечатком пальца» (fingerprint).
Созданный польским специалистов скрипт — это демонстрация концепции, которая должна показать теоретическую возможность слежки за пользователями без использования cookies. Сам скрипт исключительно простой.
var detect = function(base, if_installed, if_not_installed) {
var s = document.createElement('script');
s.onerror = if_not_installed;
s.onload = if_installed;
document.body.appendChild(s);
s.src = base + '/manifest.json';
}
detect('chrome-extension://' + addon_id_youre_after, function() {alert('boom!');});
Функционал основан на том, что у каждого расширения Chrome есть уникальный URI, который начинается с chrome-extension://
. Достаточно просто составить список URI для самых популярных расширений и обратиться к этим URI с веб-страницы. Проверка происходит очень быстро, так что можно увеличить список проверяемых расширений, если у вас есть цель действительно получить оригинальный «отпечаток» браузера пользователя.
Как вариант, вы можете проверять только некоторые специфичные расширения и надёжно идентифицировать тех пользователей, у которых установлены эти расширения.