security - 在. NET 应用程序中,如何保护API密钥

  显示原文与译文双语对照的内容
0 0

我的应用程序点击了许多 Web服务,比如 Twitter 和 Flickr 。 它使用来自这些服务的API密钥,我想在我的二进制文件中混淆它们。 ( 我不太担心盗版或者任何东西,我只需要把这些密钥保密。)

最好的方法是什么?

如果我将它们存储为 const SecureString,那么是否将它们保存在内存中? MSDN描述表示文本是"不再需要时从计算机内存中删除",但它不是内存中的常量?

Dotfuscator会在我的程序集中模糊它? ( 假设我可以把它 工作。)

时间: 原作者:

0 0

我最近必须处理这种情况。 问题并不太多,确保某人不能使用十六进制编辑器很容易地找到它,而是当它通过线向各种api发送到不同的api时。 只需运行fiddler和查看请求就会显示出。 有些api会有 private/public 键的好处,这可以帮助。

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

祝你好运

~"请勿'忘记喝你的Ovaltine了"

原作者:
0 0

Anon是正确的,没有办法完全保护数据;有人可以在。

但是你想让它尽可能的困难。 这意味着 NOT 做的事情很容易阅读:

  • 不存储在注册表项( 比如 。 TwitterAPIKey REG_SZ )
  • 不存储在文本文件中( 比如 。 twitterkey.txt ),或者在ini文件中
  • 不存储在应用程序文件的。config中
  • 不在二进制中作为纯文本存储
  • 不能在二进制文件中存储加密

这将使那些必须了解调试器的人,以及( 可能) 汇编代码。

你已经把攻击面减少了很多。

遵循前三个建议,你就会很好地工作。

原作者:
0 0

也许你可以让你的用户使用他们自己的api键。 他们可以将自己 register 自己放到api中,然后在应用程序的设置中引用它们

原作者:
...