Mysql авторизация на php: Авторизация на PHP+MySQL

jwt — PHP, MYSQL — Аутентификация на основе токенов: что, если кто-то украл мой токен?

спросил

Изменено
2 года, 8 месяцев назад

Просмотрено
1к раз

Я пытаюсь понять, правильно ли я понимаю использование «аутентификации на основе токенов».
Например, предположим, что у меня есть форма входа, и я хочу аутентифицировать пользователя.
Система основана на базе данных HTML, PHP и MySQL.

Процесс:
1. Пользователь вводит имя пользователя и пароль и отправляет их на сервер.
2. Сервер (PHP) проверяет таблицу «пользователи» в базе данных, если данные верны.
3. Если данные верны, сервер создает секретный токен и вставляет его в таблицу ‘auth_token’ в базе данных.
4. Секретный токен сохраняется в файле cookie, и пользователь передает этот токен при каждом HTTP-запросе для получения доступа.

Пока здесь все нормально.
Но что, если стороннему фактору, например хакеру, удастся украсть токен cookie у пользователя?
После этого хакер получит полный доступ к учетной записи пользователя.
Я прав? Если я прав, то как это можно предотвратить? Если это вообще возможно…

Спасибо!

  • php
  • jwt

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

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

В более безопасных системах маркер обновляется после каждого запроса, чтобы его нельзя было воспроизвести повторно. Это больше работы для приложения, поскольку оно должно проверять входящий токен, а затем подписывать и возвращать новый токен для каждого запроса/ответа. Загвоздка в том, что если злоумышленник сможет украсть ваш токен и отправит запрос до того, как вы это сделаете , то его запрос будет принят, а ВАШ запрос не будет выполнен (!), потому что для сервера ваш запрос будет выглядеть как копия. -кошка. Однако, если это произойдет, вы можете снова войти в систему и, надеюсь, загрузить любые другие токены, зарегистрированные в вашей учетной записи (подробнее об этом далее).

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

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

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Курс веб-разработки PHP и MySQL – uCertify

Изучите инструменты и методы PHP MySQL с помощью курса веб-разработки PHP и MySQL и лабораторной работы. Лаборатория обеспечивает практический опыт обучения в безопасной онлайн-среде. Курс и лаборатория PHP MySQL предоставляют практические навыки работы с безопасностью веб-приложений, администрированием MySQL, сетями и функциями протоколов; генерация образов, отладка и логирование; аутентификация и персонализация.

Вот что вы получите

Уроки

TestPrep

LiveLab

  • 60+ LiveLab

  • 60+ видеоуроков

  • 01:20+ часов

Вот что вы узнаете

Скачать план курса

Практические занятия (живые лаборатории)
  • Создание формы
  • Объявление констант
  • Использование арифметических операторов
  • Объединение строк
  • Использование тернарного оператора
  • Использование оператора ввода
  • Создание формы вывода
  • Использование оператора if
  • Использование оператора if-else
  • .