Согласно руководству Facebook для разработчиков (https://developers.facebook.com/docs/facebook-login/security), вам не нужно использовать access_token
из какого-либо клиента Facebook SDK, не убедившись, что он создан специально для вашего приложения Facebook.
Мне интересно, какие уязвимости здесь. Почему меня должно волновать, какое приложение получило токен, если я могу использовать его для вызовов API и получения пользовательских данных через него?
Похищение токена
Чтобы понять, как это происходит, представьте собственное приложение iOS, которое хочет выполнять вызовы API, но вместо того, чтобы делать это напрямую, взаимодействует с сервером, принадлежащим тому же приложению, и передает этому серверу токен, сгенерированный с помощью iOS SDK. Затем сервер будет использовать токен для выполнения вызовов API.
Конечная точка, которую сервер использует для получения токена, может быть скомпрометирована, и другие могут передать ей токены доступа для совершенно других приложений. Это было бы явно небезопасно, но есть способ защититься от этого — токены доступа никогда не должны исходить из приложения, которое их использует, вместо этого их следует проверять с помощью конечных точек отладки.