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