Раскрытие пользовательских данных при помощи css
CSS*
Технология css несмотря на свою внешнюю безобидность способна преподносить неприятные сюрпризы. К примеру, воспользовавшись двумя стилями и небольшой javascript вставкой, мы получаем возможность проверить совершенно любой адрес на факт его посещения пользователем.
Все современные браузеры позволяют использовать специальные псевдо классы при манипулировании со стилями ссылок. Нам интересен класс visited, назначаемый ссылке в том случае, если пользователь уже посещал адресс указанный в её href. На первый взгляд такой подход несёт исключительно положительный результат — пользователь видит уже посещённые ссылки на странице и не путается.
Но веб страницы — это уже давно не только код стилей и разметки, но и обилие скриптовых вставок, без которых многие сайты просто не функционируют. JavaScript код имеет доступ к любому элементу DOM дерева и его свойствам и, значит, может получить информацию о стилях ссылок.
Таким образом, отмечая посещённые ссылки иным цветом нежели в обычном состоянии и проверяя цвет в скрипте, можно сказать, посетил ли пользователь конкретный адрес или нет.
«Подумаешь, проблема!» — может сказать среднестатистический пользователь. Но сколь бы несущественной не казалась данная проблема, недооценивать её не стоит. Любая возможность раскрытия данных в умелых руках может сыграть плохую шутку. Как поведёт себя злоумышленник, узнав, что Вы посещаете сайт любителей хомячков садомазохистов? А в особенности раздел, к примеру, рыжих хомячков? Возможно это ничего не даст ему, а возможно станет первым шагом в сборе информации о Вас для дальнейшего шантажа( добавим паранои для нагнетания атмосферы :) ).
Также, эта техника может быть использованна с определёнными ограничениями для брутфорса Basic HTTP авторизации.
Для раскрытия данных надо знать их потенциальные значения, что означает, что любую ссылку в интернете проверить не получится, а это требует от злоумышленника ввода массива данных, по которым и будет проводиться проверка (хотя, посмотрите пример 2 дальше по тексту).
«Нет худа без добра» — никто не помешает использовать данную технологию в мирных целях, к примеру, на странице социальной сети, позволяющей импортировать данные из других сетей, изначально отобразить только те, которые посещает пользователь.
Или же, страница магазина, зная, что пользователь посетил сайт конкурентов, может автоматом подключить промо код, снизящий цены.
Проверяет на посещение Вами профилей Хабрапользователей с первой страницы «Люди»
Скрипт
Перебирает доменные имена в зоне .ru и выводит список посещённых.
Скрипт
Пользоваться осторожно, может подвесить систему. Результаты появлятся не сразу, и проверяются только домены до 3 букв включительно. (Закончится на take=470).
Это, естественно, плохой подход, гораздо лучше подгружать списки ссылок по мере работы(к примеру сшрабленные из каталогов).
http://www.gnucitizen.org/blog/javascript-visited-link-scanner/
Теория:
Все современные браузеры позволяют использовать специальные псевдо классы при манипулировании со стилями ссылок. Нам интересен класс visited, назначаемый ссылке в том случае, если пользователь уже посещал адресс указанный в её href. На первый взгляд такой подход несёт исключительно положительный результат — пользователь видит уже посещённые ссылки на странице и не путается.
Но веб страницы — это уже давно не только код стилей и разметки, но и обилие скриптовых вставок, без которых многие сайты просто не функционируют. JavaScript код имеет доступ к любому элементу DOM дерева и его свойствам и, значит, может получить информацию о стилях ссылок.
Таким образом, отмечая посещённые ссылки иным цветом нежели в обычном состоянии и проверяя цвет в скрипте, можно сказать, посетил ли пользователь конкретный адрес или нет.
И чем это плохо?
«Подумаешь, проблема!» — может сказать среднестатистический пользователь. Но сколь бы несущественной не казалась данная проблема, недооценивать её не стоит. Любая возможность раскрытия данных в умелых руках может сыграть плохую шутку. Как поведёт себя злоумышленник, узнав, что Вы посещаете сайт любителей хомячков садомазохистов? А в особенности раздел, к примеру, рыжих хомячков? Возможно это ничего не даст ему, а возможно станет первым шагом в сборе информации о Вас для дальнейшего шантажа( добавим паранои для нагнетания атмосферы :) ).
Также, эта техника может быть использованна с определёнными ограничениями для брутфорса Basic HTTP авторизации.
Ограничения
Для раскрытия данных надо знать их потенциальные значения, что означает, что любую ссылку в интернете проверить не получится, а это требует от злоумышленника ввода массива данных, по которым и будет проводиться проверка (хотя, посмотрите пример 2 дальше по тексту).
Есть ли от этого польза
«Нет худа без добра» — никто не помешает использовать данную технологию в мирных целях, к примеру, на странице социальной сети, позволяющей импортировать данные из других сетей, изначально отобразить только те, которые посещает пользователь.
Или же, страница магазина, зная, что пользователь посетил сайт конкурентов, может автоматом подключить промо код, снизящий цены.
Примеры реального кода:
ХаброЮзерЧекер
Проверяет на посещение Вами профилей Хабрапользователей с первой страницы «Люди»
Скрипт
Доменный брутфорсер
Перебирает доменные имена в зоне .ru и выводит список посещённых.
Скрипт
Пользоваться осторожно, может подвесить систему. Результаты появлятся не сразу, и проверяются только домены до 3 букв включительно. (Закончится на take=470).
Это, естественно, плохой подход, гораздо лучше подгружать списки ссылок по мере работы(к примеру сшрабленные из каталогов).
Источники информации:
http://www.gnucitizen.org/blog/javascript-visited-link-scanner/

комментарии (68)