Как лучше всего запустить внешний браузер с C#, чтобы запустить, например. поток кода авторизации OAuth 2.0?
Например, достаточно ли безопасно следующее:
System.Diagnostics.Process.Start(<some url>);
Что тогда, если злоумышленник зарегистрировал свой собственный инструмент вместо того, чтобы браузер перехватывал введенные учетные данные?
@Neil - То есть с твоей точки зрения приемлемо (с точки зрения безопасности) просто запустить браузер, как описано? По той причине, что если злоумышленник уже имел доступ к компьютеру, то он мог/может делать все, что захочет?
@Neil - это означает, что подход Process.Start приемлем с точки зрения безопасности?





Вы не можете с какой-либо степенью разумной уверенности. Вы можете использовать тот же вызов функции и заменить URL-адрес путем к исполняемому файлу. Таким образом, вы контролируете, какой процесс запускается, но ссылка на этот исполняемый файл может быть перехвачена процессом с достаточными разрешениями через символическую ссылку на его вредоносный исполняемый файл, если он захочет. Есть ли причина, по которой это нужно обрабатывать в браузере, а не обрабатывать аутентификацию из командной строки?
VirusModulePointer. Моя «отправная точка» — это приложение с графическим интерфейсом, а не командная строка, и я хочу выполнить поток кода авторизации, заканчивающийся токеном доступа с сервера авторизации.
Сильно влияет на поведение Azure при вводе следующей команды:
az login
Я думаю, что запуск System.Diagnostics.Process.Start(<some url>); при запуске потока кода авторизации OAuth2 допустим.
Глядя на исходный код Azure CLI , оказывается, что вызывается метод PublicClientApplication.acquire_token_interactive. PublicClientApplication из библиотеки MSAL . В конце концов вызывается Python webbrowser.open, который просто оценивается как
p = subprocess.Popen(cmdline)
Это не лучше, чем Process.start().
Также стоит отметить, что между всплывающим окном браузера и командной строкой az login нет никакой связи в том смысле, что, например, закрытие окна браузера вместо авторизации не приведет к тому, что az login продолжит работу с ошибкой OAuth2 — командная строка просто зависнет.
По сути, нет. Все, что вы можете сделать, это запустить браузер с URL-адресом страницы входа. Если вы хотите, вы можете запустить определенный браузер, если кто-то найдет правильный исполняемый файл для Firebox, Chrome, Edge и т. д. Если злоумышленнику удалось установить свой собственный браузер, он вряд ли получит доступ к правильным учетным данным, поэтому вам следует нужно, чтобы пользователь ввел их, но к этому моменту у них уже есть доступ к большей части локального ПК.