2017-02-01 3 views
2

Неявный поток считается небезопасным. Я знаю две проблемы:Каковы риски безопасности неявного потока

  1. Confused deputy. Но для его преодоления вам просто нужно проверить, было ли access_token предоставлено вашей заявке. Не ахти какое дело.
  2. XSS-атака. Поэтому, если наш access_token был украден с помощью атаки XSS, его можно использовать для создания запросов (которые входят в область, изначально запрошенную нами). Это отстой, но трудно украсть access_token, так как, скорее всего, у нас это было только на нашей странице входа и не хранилось в состоянии приложения, так как это непродолжительное время (я думаю, именно поэтому неявный рабочий процесс не поддерживает токены обновления).

Это выглядит не так уж плохо. Есть ли другие уязвимости безопасности, о которых я не знаю?

ответ

1

Правильная формулировка должна быть

неявного поток небезопасен относительно к коду (и гибриду) поток.

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

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

  • XSS (как вы уже объяснили)
  • Confused заместитель проблемы (как вы уже объяснили)
  • вопросы фиксации Session (с помощью маркера пользователя А в сессии пользователя B. https://www.facebook.com/FacebookforDevelopers/videos/10152795636318553/)
  • REDIRECT_URL манипуляции параметр
  • (возможно) утечка токена с заголовком реферера
  • Различные возможности фишинга и социальной инженерии, чтобы обмануть пользователей, чтобы пропустить их токен доступа (проще, чем просить их passwo rd)

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

Смежные вопросы