Посещал ли пользователь сайт?
Атака не работает — в браузерах давно реализована защита, у меня идея «сработала» в силу того, что я не выполнил все необходимые проверки.
В прошлом было достаточно много методов определить ходил ли пользовать
Это считалось проблемой, поэтому свойство изменили так, чтобы никакой утечки информации о посещении в ДжаваСкрипт не происходило. Все современные браузеры уже много лет от этого защищены.
Но недавно меня осенило, что есть способ обойти эту защиту!
Ведь если пользователь посещал целевой сайт, то скорее всего
Я попробовал сделать это с «Гитхабом». Самый большой файл, который загружается там с первой страницей — vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-9b98c5140e22.js. Занимает он 136 килобайт, вполне подходящий размер.
Как же определить момент когда он загрузится? Если посмотреть внутрь, видно, что он после скачивания создаёт свойство webpackChunk в объекте globalThis. Если перехватить обращение к этому свойству, можно понять, что файл загружен:
const t = new Date();
Object.defineProperty(globalThis, 'webpackChunk', {
set: function() {
console.log(new Date() - t);
}
});Ниже этого кода подключаем загрузку указанного файла прямо с «Гитхаба» через тег <script> и дело в шляпе.
Я проверил, если очистить кеш браузера, то файл у меня загружается примерно за 100—400 миллисекунд, если берётся из кеша — это 0—12. Легко отличить одно от другого.
Читайте также


Комментарии 10
//Добавлено//: не, не работает. Сам себя обманул.
//Добавлено//: Может они только для
//Добавлено//: не, не работает. Сам себя обманул.