В классификации OWASP Top 10 2021 ошибки, связанные с аутентификацией, поднялись на первое место в рейтинге угроз — в 2017 году они занимали лишь пятую строчку. Эти уязвимости нашли в 94% из более чем 318 тысяч проверенных приложений.
В статье разбираем, как устроены эти этапы и почему сбой на любом из них нарушает безопасность системы.
Если система не знает, кто перед ней, не может проверить подлинность и определить права — в нее легко проникнуть. Идентификация, аутентификация и авторизация защищают от кражи аккаунтов, обхода ограничений и утечки данных.

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

16 июня 2025
15 минут
эксперт в информационной безопасности в Start X
Андрей Жаркевич
автор, редактор в ИБ, главная по фактчекингу в компании
Ульяна Крюкова
автор, редактор в ИБ, главная по фактчекингу в компании
Ульяна Крюкова
эксперт в информационной безопасности в Start X
Андрей Жаркевич

Идентификация. Как определить личность пользователя

Идентификация, аутентификация и авторизация — обычно этапы единого процесса входа в какую-либо систему, например, в аккаунт Гугл, интернет-банк или систему управления проектами.

Идентификация — первый этап, на котором система получает информацию о пользователе или объекте, чтобы определить его личность. Обычно в качестве идентификатора используют:
  • имя пользователя — логин;
  • адрес электронной почты;
  • уникальный ID;
  • MAC-адрес или IP-адрес устройства.

Например, при входе в аккаунт Гугл пользователь сначала сообщает системе, что он User1234:
Чтобы посторонний не воспользовался тем, что знает чей-то цифровой идентификатор, система требует подтверждения, что в систему пытается войти настоящий владелец этого идентификатора. Запускается процедура аутентификации.
Скачайте карту знаний и навыков по безопасной разработке
В ней — 13 уязвимостей и технологий, которые нужно знать разработчику, чтобы писать безопасный код

Аутентификация. Как подтвердить личность пользователя и избежать взлома

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

Основные виды аутентификации:
  • Парольная аутентификация — пользователь вводит пароль.
  • Биометрическая аутентификация — сканируются отпечатки пальцев или лицо.
  • Аутентификация с использованием токенов — вводится код из приложения, например, Google Authenticator.

Веб-приложения используют такие методы аутентификации:
  • HTTP Basic;
  • HTTP Digest;
  • на основе Cookie и сессий;
  • на основе токенов;
  • с помощью одноразовых паролей (One-Time Passwords, OTP);
  • OAuth и OpenID.

Рассмотрим, как работает аутентификация HTTP Basic.

Это самая простая форма аутентификации, которая встраивается в протокол HTTP. Учетные данные для входа в систему передаются в заголовках при каждом запросе:
"Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" your-website.com
Имена пользователей и пароли не шифруются. Вместо этого имя пользователя и пароль объединяются с помощью символа: в одну строку вида имя_пользователя:пароль. Затем эта строка кодируется с помощью base64:
>>> import base64
>>>
>>> auth = "username:password"
>>> auth_bytes = auth.encode('ascii') # convert to bytes
>>> auth_bytes
b'username:password'
>>>
>>> encoded = base64.b64encode(auth_bytes) # base64 encode
>>> encoded
b'dXNlcm5hbWU6cGFzc3dvcmQ='
>>> base64.b64decode(encoded) # base64 decode
b'username:password'
HTTP Basic — stateless-метод, то есть сервер не хранит состояние сессии между запросами, поэтому при каждом запросе клиент должен заново отправлять свои учетные данные. Такой способ подходит для вызовов API и простых случаев, когда не нужно поддерживать постоянную сессию пользователя.

Рассказываем, как происходит обмен между клиентом и сервером при использовании HTTP Basic аутентификации.
  1. Неавторизованный клиент запрашивает ограниченный ресурс.
  2. Сервер отправляет HTTP 401 Unauthorized и добавляет в ответ заголовок WWW-Authenticate со значением Basic.
  3. Заголовок WWW-Authenticate: Basic заставляет браузер запросить имя пользователя и пароль.
  4. После ввода учетных данных они передаются в заголовке с каждым запросом: Authorization: Basic dcdvcmQ=.

Ниже — главные преимущества и недостатки метода HTTP Basic.
Основным способом аутентификации до сих пор остается проверка пароля. Но из-за таких уязвимостей, как фишинг, прямой подбор паролей и кража учетных данных с помощью шпионского ПО, компании и сервисы все чаще вводят обязательную двухфакторную аутентификацию (2FA).

Телеграм-канал Start X

Подписаться
Наши разборы мошеннических схем поймет даже бабушка

Авторизация. Как правильно разграничить доступ и защитить систему

Авторизация — третий этап входа в систему, на котором после успешной аутентификации проверяются права пользователя и определяется, к каким ресурсам и действиям у него есть доступ.
Основные подходы к авторизации:
  • Модель на основе ролей (RBAC) — каждому пользователю присваивается определенная роль: например, администратор, редактор или обычный пользователь.
  • Модель на основе атрибутов (ABAC) — решения о доступе принимаются на основе набора атрибутов: например, возраста, отдела или региона.
  • Политики доступа — заранее задаются правила, которые определяют, кто и к каким объектам имеет доступ.

Рассмотрим подробнее модель на основе ролей — один из самых понятных и часто используемых способов авторизации.

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

Вот как это может выглядеть в коде:
user_role = "admin"
if user_role == "admin":
    print("Доступ разрешен к панели управления")
else:
    print("Доступ ограничен")
Обычно авторизация происходит после идентификации и аутентификации пользователя. Но бывают исключения. Например, в Гугл-документах доступ к файлу можно получить просто по ссылке — без ввода имени и пароля.

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

Для повышения безопасности аутентификации используют дополнительные методы, такие как многофакторная аутентификация и двухэтапная однофакторная аутентификация.

Многофакторная аутентификация (MFA) и двухэтапная однофакторная аутентификация (2SV)

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

Один из самых эффективных инструментов защиты — многофакторная аутентификация (MFA). Она добавляет дополнительный уровень безопасности: требует от пользователя не только знать пароль, но и иметь физическое устройство или приложение.
Многофакторная аутентификация (MFA)
MFA — обязательный стандарт защиты для современных информационных систем. MFA требует от пользователя несколько факторов для подтверждения личности.

Обычно используются три группы факторов:
  • Знание: пароль, пин-код.
  • Владение: код из смс, токен.
  • Биометрия: отпечаток пальца, скан лица.

Чтобы лучше понять, как работает многофакторная аутентификация, рассмотрим два примера: простой на Python и практическую настройку на сервере Linux.

Вот пример двухфакторной аутентификации на Python, где пользователь сначала вводит пароль, а затем код из смс:
password = input("Введите пароль: ")
if password == "password123":
    sms_code = input("Введите код из SMS: ")
    if sms_code == "4567":
        print("Аутентификация успешна")
  else:
        print("Ошибка: неправильный код подтверждения")
else:
    print("Ошибка: неправильный пароль")
А вот как можно настроить MFA на сервере Linux с помощью Google Authenticator:
sudo apt install libpam-google-authenticator
google-authenticator
После такой настройки пользователь будет вводить временный код из приложения при каждом входе на сервер.

С помощью MFA можно значительно снизить вероятность взлома: даже если пароль украден, злоумышленник не сможет пройти второй или третий уровень проверки.
Однофакторная двухэтапная аутентификация (2SV)
Однофакторная двухэтапная аутентификация, или Two-Step Verification (2SV), — механизм безопасности, при котором пользователь проходит два последовательных этапа подтверждения личности, но используется только один фактор аутентификации.

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

Вот как это может выглядеть в коде:
if ($_POST['password'] == $password_in_db) {
    $temp_code = generate_temp_code();
    send_email_code($_POST['email'], $temp_code);
    echo "Введите код, отправленный на почту";
}
Однофакторную двухэтапную аутентификацию (2SV) и многофакторную аутентификацию (MFA) часто путают, хотя это разные методы защиты. Основное различие — количество используемых факторов и уровень безопасности.
Однофакторная двухэтапная аутентификация усиливает безопасность за счет двух проверок одного типа данных — например, пароля и кода из смс. Однако она слабее против атак, где злоумышленник получает оба фактора. Поэтому 2SV применяют там, где внедрить многофакторную аутентификацию невозможно.

Идентификация, аутентификация и авторизация — основа защиты информационных систем. Правильная настройка этих процессов может предотвратить угрозы: в 2023 году GitHub сделал обязательной многофакторную аутентификацию (MFA) для всех активных разработчиков. Инициатива стартовала в конце 2022 года, а в 2023 стала обязательной из-за массовых попыток атак через компрометацию паролей и токенов. После введения MFA атаки через угоны аккаунтов заметно сократились.

Разобраться в механизмах идентификации, аутентификации, авторизации и научиться строить безопасные системы поможет платформа Start EDU. Запишитесь на бесплатное демо, и наш эксперт расскажет, как Start EDU помогает командам писать безопасный код и выпускать защищенные продукты.

Что еще почитать

Мужчина в кресле с ноутбуком

Подпишитесь на дайджест Start X

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