2013-04-08 78 views
4

libspotify的使用条款声明密钥应以安全方式存储。存储我找到的密钥的唯一建议是编译应用程序并分发二进制文件。由于使用调试器可以轻松检索关键字,因此我很难将其视为其他任何事物而不是安全性。防止滥用libspotify密钥

这是Spotify建议的方法吗?如果我只编译包含密钥的文件并将我的应用程序的其余部分作为开​​源代码分发,那么该怎么办?

我想我的问题的本质是:我如何避免违反ToS而不要求每个用户都获得自己的密钥?

+0

此问题似乎是无关紧要的,因为它涉及spotify的服务条款。只有关于spotify API的问题是关于主题的。 – quetzalcoatl 2013-12-13 14:45:55

回答

6

逻辑是这样的(我为Spotify工作):要求我们的开发人员跳过一堆箍环,以便将他们的API密钥放入他们的二进制文件中是不值得的 - 开发人员将被关闭每个人都会不高兴。

但是,我们不希望密钥被传播,只是因为如果每个人都使用一个密钥,我们就无法可靠地跟踪它,并且如果该密钥最终被恶意使用并且我们杀死它,的应用程序将突然被打破。

要想在可怕的汽车类比中强行推测,可以想象API密钥是一些有价值的物品,而您的应用程序就是汽车。如果您将该物品放在汽车座位上(即以明文形式显示您的API密钥),则实际上您正在邀请某人入侵并窃取(即在您的应用中使用您的密钥)。如果你把它放在手套箱里(编译成你的二进制文件),如果有人因为知道该物品在手套箱中而插入你的汽车(拆卸你的应用程序),那么无论如何它都是游戏。

简而言之:编译密钥绝对是默默无闻的安全措施,但我们认为这足以阻止人们随意重复使用其他应用程序的API密钥,因为直接从我们那里获取一个API密钥非常微不足道。

我想我的问题的本质是:我如何避免违反ToS而不要求每个用户都获得自己的密钥?

如果你以二进制形式发布你的应用程序,编译它就好了。如果您以源代码形式发布它,则不能真正包含密钥。

+0

我明白了,谢谢你澄清。然而,我可以请你扩展以下内容,关于你的最后陈述:我明白我不允许将密钥本身作为开源代码分发,但是如何将它作为目标代码重新分发(密钥),同时仍然保留其余的资源打开?我得到的当然是这样的:我可以将我的应用程序的源代码(例如)与我的密钥的编译版本一起放在公共GitHub存储库上吗?我明白到最后,我对我的钥匙负责。我只是对Spotify在这方面的立场感到好奇。 – 2013-04-10 06:42:22

+0

我将不得不从这个问题中解脱出来,因​​为它在边缘是正确的 - 是的,它已经被编译,但appkey.o将成为一个非常容易的目标。 – iKenndac 2013-04-10 09:03:28

+0

可以理解。我不想强迫你说任何可能会让你陷入麻烦的事情。无论如何,感谢您的帮助。我只是为自己保留我的钥匙,并且现在就分配资源。 – 2013-04-11 06:15:48