2015-10-21 4 views
0

Есть ли проблемы с безопасностью при отображении маркера доступа, которое получил мое приложение OAuth 2.0? Может быть, не обязательно отображаться, но даже эхо-сигнал к исходному коду веб-сайта, где он по существу «находит» пользователя. Предположим, что все HTTPS.Безопасно ли отображать токен доступа OAuth?

Пример: У меня есть сайт, на котором я хочу разрешить пользователям входить в систему с помощью Facebook. После входа в систему я получаю токен доступа к API-интерфейсу FB от поставщика удостоверений или PHP PHP SDK. Этот токен привязан к пользователю, который только что вошел в систему. Я хочу, чтобы пользователь чувствовал себя как дома, отображая изображение своего профиля, безопасно ли отобразить какой-то HTML, похожий на следующий?

<img src='https://graph.facebook.com/me/picture?access_token=USERS_ACCESS_TOKEN'> 

Edit: Я знаю, что есть и другие варианты для отображения фотографии, я не обязательно просить лучший способ сделать это. Меня больше интересует безопасность, которую нужно использовать с этими токенами доступа. Большинство ресурсов, которые я видел, похоже, не упоминают об этом.

+0

Вам не нужно выводить токен доступа в исходный код. Ваш пример получения изображения профиля ему не нужен, и до сих пор вы не описали какой-либо другой конкретный вариант использования, где это было бы требованием. Если вы хотите сделать клиентские API-вызовы, используйте JS SDK и пусть это обрабатывает токен. – CBroe

ответ

1

Маркер доступа должен иметь минимальный набор разрешений, связанных с ним, т. Е. Достаточно, чтобы фактически отображать изображение пользователя. В этом случае повышенный риск отсутствует. Атаки XSS, поскольку каждое решение для отображения изображения будет связано с теми же рисками в случае, если злоумышленнику удается украсть файл cookie сеанса и/или токен.

Только если токен доступа имеет дополнительные разрешения, связанные с ним, которые не используются в качестве части вашего интерфейса, было бы менее предпочтительным с точки зрения безопасности представить его в интерфейсе.

+0

Спасибо за ответ. Это похоже на то, о чем я думал, является ли токен содержащимся в объекте JS или на самом деле где-то в DOM, единственное, что нас действительно беспокоит, - это какая-то атака XSS (за исключением чего- плечо). Я не уверен, как JS SDK, как правило, заботятся об этих токенах, но я должен предположить, если кто-то имеет доступ к скриптам, к которым они могут получить доступ к токенам. –

+0

Хотя я предполагаю, что тег '' с токеном делает пользователя более правдоподобным, чтобы сделать что-то вроде щелчка правой кнопкой мыши и сохранить изображение или отправить ссылку кому-то другому. Таким образом, по крайней мере, внутри JS более безопасно, чем это, не думал об этом до сих пор. –

+0

Я бы не назвал это более безопасным, но тем более неясным, т. Е. Менее удобно разбить его или спасти его где-то случайно, но, безусловно, все еще возможно для определенного атакующего. –

-1

Ahh, я вижу, что вы делаете. Вместо токена oauth сделайте так: http://graph.facebook.com/1477079525902964/picture и ta-da

+0

Возможно, я должен был уточнить это в вопросе (я отредактирую), но я не обязательно ищу, как отображать изображение профиля. Я знаю, что есть несколько разных способов сделать это, мне было любопытно, какие меры предосторожности должны быть приняты с помощью токенов доступа. У вас есть хороший ресурс, показывающий, что они не должны отображаться в виде обычного текста? –

+0

Из того, что я вижу здесь, есть пара из них, которые могут быть связаны с безопасностью: https://developers.facebook.com/docs/facebook-login/permissions/v2.5 (ads_management, user_photos, publish_actions), я думаю, что эмпирическое правило просто не. Никто не требует никакой ответственности. Если на странице я могу создать атаку XSS, чтобы нацелить вашу страницу и вытащить ее из html. –

0

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

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