Как предотвратить атаку замены токена? - PullRequest
0 голосов
/ 28 декабря 2018

Предположим, что у нас есть два пользователя, выполняющих следующую операцию -

  1. Пользователь1 запросил у сервера аутентификации токен доступа и также предоставил.
  2. Теперь пользователь1 сохранит токен в localalstorage / cookie длябудущий доступ к API.
  3. Теперь User2 подходит к браузеру User1 и получает access_token, как.
  4. Теперь User2 вызывает API, используя access_token user1, и тоже получает доступ без входа в систему.

Теперь Можем ли мы проверить токен в любом случае?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Конфиденциальная информация, такая как OAuth-токен, никогда не должна храниться в HTTP-файлах cookie, если они не зашифрованы.Шифрование должно соответствовать клиенту / сеансу, что означает, что для каждого сеанса клиента должен использоваться другой ключ шифрования.Если злоумышленник извлечет зашифрованный файл cookie и попытается использовать его для другого сеанса, расшифровка не сможет сделать этот файл недействительным.

В вашем сценарии пользователь B получает доступ к сеансу пользователя A.Существует не так много защиты.Это будет похоже на то, как вы входите в свой банк, оставляете свой стол для кофе, а кто-то другой садится и начинает переводить деньги, используя то же окно браузера, в которое вы вошли.

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

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

Мой банк делает что-то интересное.Когда я вхожу в систему и продолжаю делать что-то (нажимая на ссылки, перемещая мышь и т. Д.), Я остаюсь аутентифицированным.Если я сделаю паузу на одну минуту, то в следующий раз, когда я нажму на ссылку, я должен повторно пройти аутентификацию.Интересная стратегия по обнаружению человека, который мог оставить свой стол без присмотра.

0 голосов
/ 28 декабря 2018

Вы не можете избежать этого.Однако токен должен иметь время истечения, поэтому злоумышленник будет иметь доступ только в течение этого времени.Кроме того, если вы знаете, что токен был украден, вы можете отозвать его, чтобы он больше не действовал.

Вы можете применить дополнительные меры безопасности, такие как привязка токена к определенному IP-адресу или некоторые дополнительные услуги, которыедаже использовать машинное обучение для обнаружения необычного поведения.

...