libspotify的使用条款规定密钥应以安全的方式存储。存储我发现的密钥的唯一建议是编译应用程序并分发二进制文件。由于密钥可以使用调试器轻松检索,因此我很难将其视为默认安全。
这真的是Spotify建议的方法吗?如果我只编译包含密钥的文件并将我的应用程序的其余部分作为开源分发呢?
我想我的问题的实质是:我如何避免违反ToS而不要求每个用户都获得自己的密钥?
答案 0 :(得分:6)
逻辑就是这个(我为Spotify工作):要求我们的开发人员跳过一堆箍只是为了让他们的API密钥进入他们的二进制文件是不值得的 - 开发人员将被它关闭每个人都会不高兴。
但是,我们不希望密钥被传播,只是因为如果每个人都使用一个密钥,我们就无法可靠地跟踪它,如果该密钥最终被用于恶意攻击并且我们将其杀死,那么很多申请将突然被打破。
强迫一个可怕的汽车类比,想象一下API密钥是一些有价值的项目,你的应用程序就是一辆汽车。如果您将该项目留在汽车座位上(即,您的API密钥以纯文本形式),您实际上是邀请某人闯入并窃取它(即,在他们自己的应用程序中使用您的密钥)。如果你把它放在手套箱里(把它编成你的二进制文件),如果有人闯入你的车(拆解你的应用程序),因为他们知道这个项目在手套箱中,那么无论如何它都是游戏。
简而言之:通过默默无闻的方式编译密钥是绝对安全的,但我们认为这足以阻止人们随意重用其他应用程序的API密钥,而直接从我们这里获取密钥则非常简单。
我想我的问题的实质是:我如何避免违反ToS而不要求每个用户都获得自己的密钥?
如果您以二进制形式分发应用程序,那么编译它就可以了。如果您以源代码形式分发,则无法真正包含密钥。