#github #authorization #github-api #github-app
#github #авторизация #github-api #github-app
Вопрос:
Я нахожусь в процессе создания веб-сайта, интегрированного с моим приложением GitHub.
У этого веб-сайта есть свои пользователи (из Google OAuth), которые могут подключить свою учетную запись к своей учетной записи GitHub, установив мое приложение GitHub.
В процессе установки приложения GitHub есть что-то, что я не могу понять:
После того, как пользователь установит мое приложение на GitHub:
- их браузер перенаправляется на URL («Установочный URL после установки») с идентификатором установки в URL.
- GitHub вызывает мой webhook для объявления установки
Идентификатор установки — это разумная информация, поскольку, если злоумышленник моего веб-сайта (злоумышленник) может обмануть мой веб-сайт, связав свою учетную запись с идентификатором установки GitHub кого-либо другого (жертвы), мой веб-сайт будет работать с API GitHub жертвы от имени злоумышленника (что являетсяплохо!).
Теперь моя цель — надежно привязать этот идентификатор установки к пользователю моего веб-сайта.Под безопасным я подразумеваю, что мой веб-сайт не может предоставить злоумышленнику разрешения на установку моего приложения на GitHub жертвы.
Использование идентификатора установки GitHub, указанного в «URL-адресе установки после установки», для привязки этой установки к учетной записи моего веб-сайта небезопасно, поскольку у меня нет способа проверить, что этот идентификатор установки «принадлежит» пользователю моего веб-сайта, поскольку URL-адрес может быть подделан злоумышленником, знающим действительный URL-адрес.установите идентификатор жертвы.
Несовершенные меры по смягчению последствий:
- подтвердите, что идентификатор установки не привязан ни к какой другой учетной записи пользователя моего веб-сайта
- плохо, как это можно обойти, если по какой-то причине законный пользователь никогда не перенаправлялся на мой веб-сайт, используя «Установочный URL после установки», чтобы привязать этот идентификатор установки GitHub к своей учетной записи
- плохо, как и в любом случае, это было бы уязвимо для «гонки» (или времени?) атака на подтверждение (если злоумышленнику удается подтвердить действительный идентификатор установки до жертвы)
- использовать в сочетании с событием события API GitHub, полученным на webhook
- webhook запускается серверной частью Github и, следовательно, не может идентифицировать вошедшего в систему пользователя веб-сайта, что не помогает нам привязать идентификатор установки github к соответствующему пользователю веб-сайта.
Я что-то упускаю или это недостаток модели авторизации приложения?
Ответ №1:
Найден ответ:
Мне нужно было активировать «Запросить авторизацию пользователя (OAuth) во время установки». Таким образом, GitHub отвечает защищенным токеном, который я могу использовать для проверки установки вместо просто идентификатора установки.