我的应用程序遇到了许多Web服务,例如Twitter和Flickr。它使用来自这些服务的API密钥,我想在我的二进制文件中对它们进行模糊处理。 (我真的不担心盗版或其他任何事情,我只需要保密这些密钥。)
最好的方法是什么?
如果我将它们存储为const SecureString,是否会使它们不受内存影响? MSDN描述说文本“不再需要时从计算机内存中删除”,但不是常量内存中的常量?
Dotfuscator会在我的程序集中隐藏它吗? (假设我可以将它转到work。)
答案 0 :(得分:8)
我最近不得不处理这种情况。问题不在于确保有人不能使用十六进制编辑器轻松找到它,而是通过网络将其发送到各种API。只需运行提琴手并观看请求即可显示密钥。一些API将具有私钥/公钥的好处,这有点帮助。
我能想到的唯一解决方案是创建一个我自己的外部托管的Web服务,它充当客户端和目标API之间的代理。这使我能够为每个终端生成可以激活/停用的单独密钥,并且大部分敏感数据都存储在我的远程代理应用程序中。
祝你好运!〜“别忘了喝你的Ovaltine”
答案 1 :(得分:4)
Anon是正确的,没有办法完全保护数据;有人总能得到它。
但是你想尽可能地让它变得困难。这意味着不要做易于阅读的事情:
TwitterAPIKey REG_SZ
)twitterkey.txt
)或ini文件这将使那些必须了解调试器和(可能)汇编代码的人。
你已经大大减少了攻击面。
只关注前三个建议,你就可以了。
答案 2 :(得分:0)
也许您可以要求您的用户使用自己的api密钥。 他们可以将自己注册到api,然后在应用程序的设置中引用他们的密钥