如何保护.NET应用程序中的API密钥

Jos*_*elo 9 .net security obfuscation dotfuscator api-key

我的应用程序访问了许多Web服务,例如Twitter和Flickr.它使用来自这些服务的API密钥,我想在我的二进制文件中对它们进行模糊处理.(我真的不担心盗版或其他什么,我只需要保密这些密钥.)

什么是最好的方法呢?

如果我将它们存储为const SecureString,是否会使它们无法存储?MSDN描述说文本"不再需要时从计算机内存中删除",但不是常量内存中的常量?

Dotfuscator会在我的装配中掩盖它吗?(假设我可以让它工作.)

use*_*uld 8

我最近不得不处理这种情况.问题不在于确保有人不能使用十六进制编辑器轻松找到它,而是通过网络将其发送到各种API.只需运行提琴手并观看请求即可显示密钥.一些API将具有私钥/公钥的好处,这有点帮助.

我能想到的唯一解决方案是创建一个我自己的外部托管的Web服务,它充当客户端和目标API之间的代理.这使我能够为每个终端生成可以激活/停用的单独密钥,并且大部分敏感数据都存储在我的远程代理应用程序中.

祝好运!

〜"别忘了喝你的Ovaltine"


Ian*_*oyd 4

匿名是正确的,没有办法完全保护数据;总有人能得到它。

但你想让事情变得尽可能困难。这意味着不要做一些容易阅读的事情:

  • 不存储在注册表项中(例如TwitterAPIKey REG_SZ
  • 不存储在文本文件(例如twitterkey.txt)或 ini 文件中
  • 不存储在应用程序的 .config 文件中
  • 不以纯文本形式存储在二进制文件中
  • 不将未加密的内容存储在二进制文件中

这将使人们必须了解调试器和(可能)汇编代码。

您已经大大减少了攻击面。

只需遵循前三个建议,您就会顺利上路。