Pull to refresh

Отслеживание параметров браузера и ОС пользователя как мера предотвращения угона аккаунтов (обновлено)

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

image

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

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

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

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

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

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



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


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

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

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

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


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

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

image

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

Хотя, и этот способ можно обойти: т.к. javascript выполняется в браузере, на стороне пользователя (потенциального злоумышленника), то мы можем контролировать его выполнение и, тем самым, обойти проверку (Firebug как один из вариантов). Но об этом нужно чётко знать. К тому же, обфусцированность скрипта сильно затруднит задачу.
Tags:
Hubs:
+4
Comments60

Articles

Change theme settings