это была ссылка-ловушка. ниже — досье собранное за … мс из … точек данных. без зловредов и эксплойтов — только то, что браузер сам отдаёт.
биометрика, платежи, история посещений, точное железо через timing-атаки. То, о чём редко упоминают в "мы используем cookies".
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
и PaymentRequest.canMakePayment() возвращают результат без какого-либо prompt'а пользователю.
Сайт узнаёт что у тебя есть Touch ID и Apple Pay — до того как ты что-то сделал.
введи email — если у человека есть Gravatar, выскочит его аватарка с именем и связанными аккаунтами.
пытаемся загрузить favicon с разных сайтов. если ответ <30ms — favicon уже в кеше браузера → ты там был.
три техники, где браузер до сих пор отдаёт то, что не должен: автозаполнение, состояния всех permission, и устройства уже разрешённые ранее.
вокруг этого поля — 15 скрытых input'ов с правильными
autocomplete= атрибутами: email, имя, телефон, адрес, номер карты, имя на карте,
срок, organization, username, password. кликни в видимое поле email и нажми autofill
— менеджер (Chrome/Bitwarden/1Password) заполнит ВСЕ совпавшие поля, включая скрытые. JS читает значения.
navigator.permissions.query() возвращает granted / denied / prompt
для 20+ permission'ов без какого-либо диалога. Если где-то granted — пользователь раньше уже разрешал.
navigator.usb/hid/serial/bluetooth.getDevices() возвращает устройства, уже разрешённые ранее
на этом домене — без нового prompt'а. С VID/PID/именем.
стена песочницы — фундаментальная граница веб-безопасности.