Авторизация в интернете — фундаментальная функция, присутствующая практически на всех сайтах. Мы сталкиваемся с ней регулярно: на форумах, в социальных сетях, на сайтах банков или в комментариях к новостям. Но какие технологии скрываются за кнопкой «Войти», знают далеко не все.

Механизм авторизации начинается с идентификации пользователя. Пользователь вводит свое имя пользователя и пароль в форму авторизации и отправляет их системе. Используя эти два параметра, система ищет учетную запись пользователя в своей базе данных и, если пользователь найден, создает для него сессию.

Напомню, что пароли пользователей не хранятся в базах данных в чистом виде. Вместо них в базах хранятся специальные буквенно-цифровые ключи. Эти ключи — результат применения к паролям специальных криптографических функций. Такие функции необратимы, и восстановить пароль по их результатам крайне сложно. Это сделано для того, чтобы в случае утечки данных злоумышленники не могли воспользоваться паролем пользователя для попытки входа в его учетные записи на других сайтах (у многих пользователей на всех сервисах установлен одинаковый пароль).

Сессия и печеньки

Сессия состоит из ключа — некоторого уникального набора символов — и данных. В самом простом случае данные сессии ограничиваются идентификатором пользователя из базы данных. Но часто там хранится и множество других данных, которые должны быть уничтожены, как только пользователь покинет систему: неоплаченный заказ из корзины, текст неотправленного комментария, неопубликованная фотография и т.д.

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

Отправка ключа сессии браузером осуществляется с помощью механизма, называемого печеньками (Cookies). Для каждой печеньки сервер может установить срок годности, по истечении которого браузер пользователя автоматически уничтожает печеньку. Если срок годности не указан, она уничтожается как только пользователь закрывает окно браузера.

Функция «запомнить меня»

Именно благодаря механизму срока годности печенек и работает функция «запомнить меня». По умолчанию, сервис создает для пользователя сессию, истекающую в момент закрытия браузера. Но если пользователь устанавливает галочку в поле «запомнить меня», то сервер устанавливает печеньку с достаточно большим сроком годности: от месяца до нескольких лет, в зависимости от сервиса.

К сожалению, чем больше срок годности печеньки, тем выше вероятность так называемой кражи сессии: угон злоумышленником ключа сессии, хранящегося в печеньке. Угон ключа сессии позволяет злоумышленнику выполнять действия от имени пользователя. По этой причине такие сервисы, как платежные системы и личные кабинеты на сайтах банков не предоставляют механизма «запомнить меня». Более того, часто они вводят дополнительную защиту, например отправляют специальный код на мобильный телефон пользователя для подтверждения его личности.

Авторизация через сторонние сервисы

Последнее время популярным стал механизм авторизации через сторонние сервисы. На многих сайтах пользователи могут оставлять комментарии с использованием учетных записей в социальных сетях. Работает это в несколько этапов. Предположим, что пользователь уже авторизован Вконтакте. Давайте разберемся, что происходит, когда он нажимает на кнопку «Войти с помощью Вконтакте».

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

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

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

 

Учитывая всю информацию, изложенную в статье, можно составить список рекомендаций по безопасности для пользователей:

  1. Используйте разные пароли для разных сайтов. Конечно, помнить множество паролей очень сложно. В решении этой проблемы можно воспользоваться сервисом LastPass, о котором я писал в одной из прошлых статей.
  2. Если вы работаете с чужого компьютера, снимайте галочку с поля «запомнить меня» и нажимайте «Выход» в конце работы. Это удалит все временные данные сессии и не позволит следующему пользователю компьютера воспользоваться вашими учетными данными в своих целях.
  3. В случае авторизации с помощью соцсетей, внимательно читайте запрашиваемые сервисом-отправителем полномочия. Часто назойливые сервисы любят публиковать от вашего имени рекламу у вас на стене.

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