Как стать автором
Поиск
Написать публикацию
Обновить

Представлен хак, как на 100% CSS (без JavaScript) получить IP‑адрес пользователя на :root

Время на прочтение1 мин
Количество просмотров16K
Всего голосов 11: ↑6 и ↓5+5
Комментарии24

Комментарии 24

Намного проще в background запросить SVG с текстом ip

А в svg с помощью тега foreignobject - вообще положить отрендеренный на сервере HTML

В этот HTML тоже продолжить SVG и так повторить

<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
  <style>
    div {
      color: white;
      font: 18px serif;
      height: 100%;
      overflow: auto;
    }
  </style>

  <polygon points="5,5 195,10 185,185 10,195" />

  <!-- Common use case: embed HTML text into SVG -->
  <foreignObject x="20" y="20" width="160" height="160">
    <!--
      In the context of SVG embedded in an HTML document, the XHTML
      namespace could be omitted, but it is mandatory in the
      context of an SVG document
    -->
    <div xmlns="http://www.w3.org/1999/xhtml">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis mollis
      mi ut ultricies. Nullam magna ipsum, porta vel dui convallis, rutrum
      imperdiet eros. Aliquam erat volutpat.
    </div>
  </foreignObject>
</svg>

Попробовал данный код ,позвонили с ФСБ и сказали не пользоваться больше хакерством.

Ничего не понял, но пользуясь случаем задам один вопрос, вдруг кто знает.

Можно ли с произвольного сайта получить свой IP-адрес (т.е. тот IP под которым сайт видит http запросы от меня), даже если сайт не обладает официально таким функционалом?

Думаю нужен программатор

Или программистор.

Да

Конечно, нет. Произвольный сайт может быть за прокси, который ему даже http_x_forwarded_for не заполняет и сам сайт не знает ip клиента.

Наверное стоит уточнить "зачем мне это нужно" - для понимания, видит ли сайт (и соответственно может ли залогировать) мой реальный IP, если я этого не хочу. Т.е. для дополнительной самопроверки, не забыл ли я включить и правильно ли настроил прокси/vpn/иные средства анонимизации. Если сайт не видит мой IP потому что сам сидит за прокси - ну это еще лучше, я увижу что отдаваемый IP отличается от моего даже без прокси с моей стороны.

Вопрос в том - как это сделать, т.е. как получить с произвольного сайта ip-адрес с которого к нему приходит обращение от меня. Есть ли готовые решения. Очевидно, наилучшим решением будет расширение для браузера.

Сам сайт такую информацию отдаст только по своему собственному желанию. Можно попытаться это решить на уровне tcp/ip, но это не будет 100% гарантией в некоторых случаях.

Трассировка (tracert/traceroute) до доменного имени сайта покажет, через какой интерфейс роутера (или самого клиентского компьютера) уходит запрос (и именно его увидит edge сервер на стороне сайта и именно на него будет отвечать). Если роутинг тривиальный (один дефолт маршрут на все внешние ip), браузер чистый, нет старых кук, локал стореджей, закешированных ресурсов с токенами, редких фингерпринтов и т.п., то, скорее всего, реальный ip не определим на стороне веб-сервера.

Если же роутинг посложнее (в эти подсети ходи напрямую, сюда - через впн), то и слить реальный ip проще. Браузер же запросит не только URL, он запросит ещё и пачку ресурсов (скриптов, стилей и т.п.) с, возможно, поддоменов или других url-ов. Или GET доменное имя сайта, на самом деле, отдаёт 301 www.доменное имя сайта. Всё это, неявно, приведёт к самым разнообразным запросам к непроверенным трассировкой url-ам, часть из которых вполне может попадать в подсети хождения напрямую. И если у сайта есть контроль над этими запросами и какие-нибудь токены в url-е, то он вполне себе может сопоставить, что клиент пришёл с вот такого хорошего ip, ему отдали страничку, где сказали запросить скрипт с уникальным токеном с поддомена, а на поддомен он (по уникальному токену) уже пришёл с плохим ip.

А зачем для этого "произвольный" сайт? Специализированного недостаточно?

получить с произвольного сайта ip-адрес с которого к нему приходит обращение от меня.

  1. Открываете гугол, или любой другой поисковик

  2. Пишете в строке поиска: мой ip

  3. На первой странице будет куча результатов, типа «узнать мой ip», выбирайте любой.

:)

и соответственно может ли залогировать

Кому надо логгируют миллион всяких вещей помимо айпи адреса. Куки, версия операционки, версия браузера, разрешение экрана, еще как-то играются с браузерным кэшем, но подробностей про кэш не помню, геолокация, время отклика и еще куча параметров в общем все, куда браузеру будет позволено дотянуться. Так что смогут узнать вы это, или нет, даже если будете использовать мобильный интернет в разных концах города.

  1. Открываете гугол, или любой другой поисковик

  2. Пишете в строке поиска: мой ip

  3. На первой странице будет куча результатов, типа «узнать мой ip», выбирайте любой.

Это я и так знаю, у меня целая коллекция ссылок на различные такие сервисы.

Кому надо логгируют миллион всяких вещей помимо айпи адреса.

Пускай логируют, у меня куча браузеров, в том числе в виртуалках, с очисткой кэшей при выходе и т.п. К тому же, разрешение экрана не является юридически значимой информацией, а вот IP адрес - является.

Разрешение экрана не является юридически значимой информацией, но вместе с другими параметрами позволяет сконструировать fingerprint, который можно использовать для корреляции действий с разных ip адресов.

чесслово, детский сад, младшая группа...дитятко, твой ip адрес (кстати он на самом деле не твой,а провайдера) вообще может менятся каждые 3 минуты...а диапазон и во́все быть из серого пула и все стопятсот пользователей видны со стороны интернета под одним единственным адресом NAT сервера. мальчик, иди читай книжки, учи матчасть..."юридически значимой"....тфу...понахватаются умных слов

Любой сервис в интернете (не только сайт) всегда видит IP-адрес клиента. Этот IP-адрес хранится в заголовках IP пакета. Другое дело, что "клиентом" может быть не ваш компьютер, а какая-то промежуточная сущность. Например, ваш прокси или VPN-сервер, или какой-то CDN типа cloudflare. Но если вы подключаетесь к сервису напрямую, то он всегда будет видеть ваш внешний IP. Так работает интернет.

Можно, если вы "навяжете" клиенту совершить установку любой дополненной логики: java, flash (устарело) и так далее. Средствами js, php и иных по протоколу http это делать запрещено.

  1. хак CSS, который позволяет документу :root захватывать и удерживать ‑var‑data, вычисленные из нескольких слоев вложенного DOM

А где пункты 4,5,6….

Про айпи адрес в итоге не слова. Вы что нашего Ивана хотите надурить?

Сам IP вычисляется на PHP, а не на CSS.

Так и в чем хак? С тем же успехом можно закодировать название шрифта, сам content.. что угодно. Банально вывести в background и так далее. Один ляд вся работа возлагается на php скрипт, который, исходя из теории - а ведь ничего за 20 лет не поменялось, если не изменяет память - не отдаёт клиентский ip, а отдаёт данные конечного адресата http протокола. Хороший способ отображения любой инфы, не только ip. Ip вообще тут ни при чем и соответственно всё работает под chrome, так как используют работу с экспериментальным псевдоэлементами поверх стандарта консорциума. Ну, молодец, автор. Сумел. Всё, кроме определения ip средствами css.

не отдаёт клиентский ip

И на кой ляд вам "Клиентский IP"? Вот мой например: 192.168.1.98. Много вам с него пользы?

отдаёт данные конечного адресата http протокола

Не очень совсем понятно, что вы пытаетесь иметь в виду.

хоть один адекватный и правильный комментарий...прочитал всю ветку что бы его найти.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости