Как защитить ключ API в приложении .NET - PullRequest
9 голосов
/ 09 февраля 2011

Мое приложение работает с несколькими веб-службами, такими как Twitter и Flickr. Он использует ключи API от этих сервисов, и я хотел бы запутать их в своих двоичных файлах. (Я не очень беспокоюсь о пиратстве или о чем-то другом, мне просто нужно хранить эти ключи в секрете.)

Какой лучший способ это сделать?

Если я сохраню их как const SecureString , значит ли это, что они останутся в памяти? В описании MSDN говорится, что текст «удаляется из памяти компьютера, когда он больше не нужен», но не всегда ли const в памяти?

Будет ли Dotfuscator скрывать это в моей сборке? (Предполагая, что я могу получить это работа .)

Ответы [ 3 ]

8 голосов
/ 09 февраля 2011

Мне недавно приходилось иметь дело именно с этой ситуацией. Проблема не столько в том, что кто-то не может легко найти его с помощью шестнадцатеричного редактора, а в том, что он отправляется по проводам в различные API. Просто запустив Fiddler и проследив за запросами, ключ покажет. Некоторые API имеют преимущество частного / открытого ключа, который немного помогает.

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

Удачи!

~ "Не забудь выпить свой овальтин"

4 голосов
/ 09 февраля 2011

Анон верен, нет способа полностью защитить данные; кто-то всегда может получить это в.

Но вы хотите сделать это как можно сложнее. Это значит не делать то, что облегчает чтение:

  • не хранится в разделе реестра (например, TwitterAPIKey REG_SZ)
  • не сохраняется в текстовом файле (например, twitterkey.txt) или в INI-файле
  • не хранится в файле приложения .config
  • не сохраняется как простой текст в двоичном виде
  • не хранит незашифрованные в двоичном виде

Это оставит людей, которые должны знать отладчик и (возможно) код ассемблера.

Вы значительно уменьшили поверхность атаки.

Следуйте только первым трем советам, и вы будете в пути.

0 голосов
/ 09 февраля 2011

возможно, вы можете попросить своего пользователя использовать свои собственные ключи API. Они могут зарегистрироваться в apis, а затем ссылаться на их ключ в настройках вашего приложения

...