Компиляция учетных данных служебной учетной записи в исполняемый файл?

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


person aleclouisgrant    schedule 03.12.2019    source источник
comment
Почему бы не зашифровать их? Помещение их в DLL скрывает их от обычного пользователя, но любой более продвинутый пользователь может загрузить DLL в нечто вроде декомпилятора IL и увидеть учетные данные в виде простого текста.   -  person Ron Beyer    schedule 04.12.2019


Ответы (1)


Вы можете просто жестко закодировать его в строке своего приложения:

var apiKey = "my key";

Но как упоминалось в комментарии выше, кто-то может декомпилировать IL и посмотреть его. Это также затруднит изменение, если вам нужно.

Или вы можете зашифровать его в файле конфигурации.

Но в любом из этих вариантов или действительно в любом варианте, когда ваше приложение взаимодействует напрямую с API Google, любой опытный пользователь может использовать что-то вроде Fiddler для проверки трафика и просмотра ключа (даже если он передается через SSL). ).

Единственный способ защитить ваш ключ Google API — не позволять вашему приложению взаимодействовать напрямую с Google API. Вы можете настроить свой собственный API в качестве прокси. Пользователь аутентифицируется в вашем API, используя разные учетные данные для каждого пользователя, и ваш API общается с Google. Таким образом, если кто-то плохо себя ведет, вы знаете, кто это, и можете отключить его учетные данные.

person Gabriel Luci    schedule 03.12.2019