Подтвердить что ты не робот

Как некоторые веб-службы признают, что я вхожу в систему из нового местоположения?

Я заметил, что несколько веб-сервисов (а именно Steam, Facebook, Google и т.д.) могут обнаружить новый браузер/новое местоположение, и в некоторых случаях мне нужно проверить его с помощью отправленного по электронной почте кода.

Как они это делают? Используют ли они куки? Какой-то другой способ? Насколько это достоверно?

Как я могу определить, входит ли пользователь в свою "обычную" среду, будь то тот же браузер, тот же компьютер, такое же приблизительное местоположение?

4b9b3361

Ответ 1

Вот некоторые идеи, которые могут вас заинтересовать...

Как я уже говорил вам, это не точная наука. Вы должны сохранить то, что важно для безопасности, и рассмотреть все эти "дополнительные"

Плюс, помните, что все предлагаемые "длительности времени" субъективны в зависимости от того, насколько язвительны доступ к вашему сайту и насколько сильным должно быть обнаружение устройств.


Это факторы, которые могут помочь идентифицировать устройства:

Файлы cookie доступа

Во-первых, access token cookie может не обязательно отличаться от device id cookie, на самом деле маркер доступа может использоваться для однозначной идентификации браузера, даже если строка токена часто обновляется таким образом: 1 сеанс = 1 устройство.

Вместо этого, если вы хотите рассмотреть одно и то же устройство двумя или более браузерами, вы должны использовать, конечно, два разных файла cookie. 1 устройство = 1 сеанс на chrome + 1 сеансе на firefox и т.д.

Во-вторых, cookie должны "никогда" не истекать (срок его действия истекает через годы). Если вы хотите закончить длительность "помнить-меня", вы должны сделать это только в своем коде. Это, потому что cookie, который "никогда" не истекает и который фактически связан с истекшим сеансом, по-прежнему полезен для идентификации устройства, которое использует пользователь! Также, когда пользователь выходит из системы, не удаляйте файлы cookie (ы), не уничтожайте сеанс внутри вашего кода.

IP

Как протоколировать IP-адреса?

Каждый раз, когда пользователь меняет IP на тот, который считается действительным, вы должны его зарегистрировать. Это означает, что вам нужна таблица для регистрации всех IP-адресов sessionID | IP | lastActionDateTime | [other factors]+. Если строка, содержащая комбинацию идентификатора устройства и IP, уже существует, и если lastActionDateTime был создан, например, в течение 12-24 часов, вы обновите lastActionDT, в противном случае вы должны создать новую строку. Это, если не изменить другие факторы.

Как проверить, действительно ли измененный IP-адрес?

Используя базу данных GEOIP, вы получаете местоположение пользователя: это даже не близко, чтобы быть надежным, но вы можете использовать API Карт Google, чтобы проверить расстояние между последним известным местоположением и новым, связанным с IP, или если база данных GEOIP уже дает вам LAT, LONG значения, вы можете просто рассчитать расстояние между двумя точками (больше информации здесь, но многие статьи доступны в Интернете... Я на самом деле не проверял, но все должно быть хорошо), Итак, скажем, что вы можете считать действительным IP-адрес, который находится на расстоянии 100-500 км от последнего известного местоположения.

При изменении IP?

  • С 3G-IP ​​может измениться даже несколько шагов, поэтому, если вы пересмотрите представление страницы с некоторым другим IP-адресом, а недавний предыдущий просмотр страницы был сделан с тем же IP-адресом, вы должны считать этот IP действительным, потому что он действителен всего за несколько минут до (lastActionDT), конечно, соответственно, к состоянию других факторов, которые должны быть идентичны последним известным.

  • Если вы обнаружите измененный IP-адрес после нескольких часов или, возможно, дней бездействия, вы можете считать его действительным и разрешить логин, особенно если другие факторы совпадают, или если вы хотите усилить безопасности, вы можете рассматривать этот случай следующим образом:

  • Если вы обнаружите измененный IP-адрес после нескольких дней бездействия, вы должны попросить снова войти в систему с помощью формы. Здесь сеанс истек, но файл cookie все еще существует и может использоваться, поэтому, если учетные данные формы действительны, вы продлеваете срок действия deviceID, а не создаете новый deviceID.

Строка UA

Строка UA содержит дополнительные дополнительные проверки, но не обязательно значительную часть времени, но полезна для обнаружения подозрительных изменений версий (например, что вы думаете, если бы тот же сеанс сгенерировал сначала просмотр страницы Chrome 27.0 и через некоторое время просмотр страницы Chrome 26.0?).

  • Пользователь мог использовать переключатель user-agent.
  • Пользователь импортировал настройки (включая файлы cookie) в другой браузер на той же машине.
  • Файлы cookie сеанса были украдены.

Итак, это очень ненадежно, но, как вы можете себе представить, он дает некоторые подсказки.

(бонус) Свойства экрана

Если вы хотите рассмотреть два браузера на одном и том же компьютере на одном и том же "устройстве", вы можете использовать javascript (конечно, так как это клиентская проверка, это не доверяет безопасности, но все же полезно... например, если кто-то украл он может не знать, что ему нужно подделать эти значения, которые вы собираетесь использовать для дополнительной проверки: -P). В любом случае window.screen содержит эти свойства, которые действительно полезны для однозначной идентификации OS/computer

  • window.screen.availWidth и window.screen.availHeight
  • window.screen.availLeft и window.screen.availTop
  • window.screen.width и window.screen.height

... имея в виду, что значения могут быть инвертированы "на лету" на мобильных устройствах (проверьте window.screen.orientation)

(бонус) API геолокации

Еще одна дополнительная проверка может быть выполнена с использованием API-интерфейса HTML5 Geolocation (конечно же, там, так как он является сторонним клиентом, он не является надежным для безопасности, но он полезен, если используется в сотрудничестве с предыдущими факторами) Спецификация API геолокации

В надежде быть полезным...

Уэс

Ответ 2

Отказ от ответственности: Я никак не связан с Steam


Используют ли они куки?

Возможно, вы сможете найти это с сетевым снифером. Пожалуйста, смотрите:

и других связанных материалов.

Какой-то другой способ?

Вероятно, вам нужно выяснить, проанализировав трафик, который может потребовать от вас атаки "человек-в-середине". Это может быть трудно выполнить, поэтому вы также можете обратиться в службу технической поддержки Steam и запросить техническую документацию. Оба действия помогут вам узнать больше.

Насколько это достоверно?

Надежность обычно зависит от потребностей, поэтому я бы сказал, что она достаточно надежна для потребностей Steam.