4

libspotify 的使用条款规定密钥应以安全的方式存储。存储我发现的密钥的唯一建议是编译您的应用程序并分发二进制文件。我很难将其视为默默无闻的安全性之外的其他任何东西,因为使用调试器可以轻松检索密钥。

这真的是 Spotify 建议的方法吗?如果我只编译包含密钥的文件并将我的应用程序的其余部分作为开​​源分发呢?

我想我的问题的本质是:如何在不要求每个用户获取自己的密钥的情况下避免违反 ToS?

4

1 回答 1

6

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

但是,我们不希望密钥四处散布,因为如果每个人都使用一个密钥,我们就无法可靠地跟踪它,如果该密钥最终被用于恶意活动并且我们将其杀死,那么很多应用程序会突然被打破。

用一个可怕的汽车类比,想象 API 密钥是一些有价值的项目,而您的应用程序是一辆汽车。如果您将物品留在汽车座椅上(即,使用纯文本的 API 密钥),您实际上是在邀请某人闯入并窃取它(即,在他们自己的应用程序中使用您的密钥)。如果您将其放入手套箱(将其编译为二进制文件),如果有人闯入您的汽车(拆解您的应用程序),因为他们知道该物品在手套箱中,那么无论如何游戏都结束了。

简而言之:在密钥中编译绝对是安全的,但我们认为这足以劝阻人们不要随意重用其他应用程序的 API 密钥,而直接从我们这里获取一个密钥是相当微不足道的。

我想我的问题的本质是:如何在不要求每个用户获取自己的密钥的情况下避免违反 ToS?

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

于 2013-04-08T18:02:57.577 回答