Информационная безопасность / Отслеживание User-Agent как мера предотвращения угона аккаунтов (обновлено)

в 19:16, , рубрики: browser, cookies, mitm, user-agent, взлом, идентификация браузера, человек посередине, метки: , , , , , ,

Уважаемые Хабровчане! Вчерашний вариант статьи я полагал, что находится в черновиках. И посему отобразился недописанным. Предлагаю полную, дописанную версию

Многие он-лайн сервисы стремятся обезопасить аккаунты своих пользователей самыми различными способами. Кто-то отслеживает IP-адрес, сбрасывая кукисы при его изменении (так происходит на Секлабе; вКонтакте просто просит подтвердить последние 4 цифры мобильника). У кого-то сессия живёт ограниченное время, заставляя пользователя авторизоваться снова и снова. У этих способов есть свои достоинства и недостатки. Но какой бы из механизмов не использовался, отслеживание User-Agent придаст дополнительную защиту от угона аккаунтов (как дополнительная защита, но ни в коем случае не основная). И очень странно, что я до сих пор не смог встретить ни одного сервиса, поддерживающего этот механизм защиты.

Задайтесь вопросом: в каких случаях при очередном посещении ресурса у пользователя кукисы будут аналогичны прошлому посещению, но изменится User-Agent? Только в 3-х случаях:

1. Пользователь авторизовался с разных компьютеров (например, дома и на работе) и по некоторым причинам использует разные браузеры.
2. Пользователь авторизовался с 1 компьютера в разных браузерах (этим будут страдать, пожалуй, только веб-разработчики и особо любопытные).
3. У пользователя угнали сессию.

Детектить предлагается не весь параметр User-Agent, а тип браузера (IE, FF, Crome, Safari и т.д.) и операционную систему (Windows, Linux, MacOS). Это решит проблемы ложного срабатывания при обновлении ПО на компе пользователя.

Да, User-Agent можно подменять. Но:
1. Довольно часто с этим никто из угонщиков сессии не парится.
2. Подмену User-Agent можно определить (читайте ниже как).

Рассмотрим предлагаемый метод защиты в дополнение к имеющимся. В совокупности с классическими случаями угона сессии.

Отслеживание изменения IP адреса

Это хорошая практика. Но не поможет, если у пользователя нету мозгов хватило ума заходить на свой аккаунт через беспроводную сеть, где его сессию и прослушали. Либо он стал жертвой атаки «человек посередине» от злоумышленника, находящегося в одной подсети с ним у провайдера (не смейтесь, случай хоть и бородатый, но всё ещё частенько встречающийся). Скорее всего, злоумышленник не будет париться с изменением User-Agent. На то мы и рассчитываем. В итоге, доп защита срабатывает.

Сессия живёт ограниченное время

Ну мало того, что это неудобно для пользователя (часто авторизоваться). Так ещё и ситуация абсолютна аналогична предыдущей. И опять же: изменение User-Agent может быть чётким сигналом попытки угона сессии.

А что делать тем, кто всё-таки пользуется разными браузерами дома и на работе?

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

«Ну, подменить User-Agent труда не составит, с этим только школота недостаточно опытные взломщики не справятся»,

— скажет тут кто-то их посетителей.

Действительно, кому нужно — тот сможет подменить. Но на помощь приходит интересный способ определения браузера через javascript. Метод очень действенный, сам проверял. И на текущий момент я не знаю как можно его обмануть.

Автор: shanker


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js