Qui*_*onn 7 c# c++ java android ios
我试图找出应该在桌面应用程序中存储应用程序机密和密钥的位置或方式.
例如,Facebook应用程序密钥或Dropbox密钥和密钥.
所以我读过我应该哈希,加盐,加密等等这些值.这是为了防止有人对我的代码进行逆向工程并查看密钥.
这一切都很好,但是通过所有这些方法,我只是在某处存储salt或hash值而不是密钥本身.当然,如果黑客可以获得salt/hash和可能的源代码,他们将能够解密加密的密钥并获得我的密码/密钥/秘密吗?
我读过的一个选项似乎最安全的是根本不将这个值存储在桌面应用程序中,而是调用Web服务来获取密钥(可能是加密的).但我的问题是,即使在这种情况下,一个体面的黑客肯定会只是做一个内存转储或什么来看看从Web服务返回的值是什么,然后我们回到第1方.
下一个最好的选择似乎是默默无闻.
我完全错过了什么吗?
另外,facebook/twitter/dropbox/etc密钥/秘密对黑客有什么用处呢?当然,他们仍然需要用户的凭据或访问令牌才能使用它?
任何建议或意见将不胜感激.
当每个用户帐户成功登录您的服务时,为应用程序生成一个新的访问令牌。您的登录服务的设计应该与网站的登录非常相似:
您的 API 提供的此身份验证令牌仅适用于个人帐户,因此应仅允许用户对其个人帐户执行操作。例如,如果用户想要执行某项操作,他们必须能够提供有效的身份验证令牌才能完成该操作。使用此方法,攻击者仍然能够获取身份验证密钥,但该身份验证密钥只能对其生成的帐户执行操作。它将无法对其他任何帐户执行操作。这里的想法是让他们弄乱数据,但将不良活动划分到一个帐户。
从那里开始,如果您确实有通用 API 调用(例如图像搜索)来访问来自多个帐户的数据,请确保您永远不会返回或允许任何帐户直接访问系统中的所有数据。仅提供有限数量的记录。在这种情况下,系统仍在执行其工作,但决不允许访问系统中的所有记录。
我通常实现这样的服务:
使用这些方法,您应该能够制作一个完全可操作的桌面应用程序。此功能存在异常情况,如果您有任何异常情况,请在评论中发布,我们可以进一步深入研究该问题,看看该解决方案是否仍然适合您。
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |