防止滥用 libspotify 密钥

2024-01-11

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

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

我想我的问题的本质是:如何避免违反服务条款而不要求每个用户获取自己的密钥?


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

但是,我们不希望密钥四处传播,因为如果每个人都使用一个密钥,我们就无法可靠地跟踪它,如果该密钥最终被用于恶意行为并且我们杀死了它,那么许多应用程序将突然出现被打破。

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

简而言之:通过隐匿方式编译密钥绝对是安全的,但我们认为这足以阻止人们随意重用其他应用程序的 API 密钥,因为直接从我们这里获取一个 API 密钥相当简单。

我想我的问题的本质是:如何避免违反服务条款而不要求每个用户获取自己的密钥?

如果您以二进制形式分发应用程序,则将其编译就可以了。如果您以源代码形式分发它,则无法真正包含密钥。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止滥用 libspotify 密钥 的相关文章

随机推荐

  • 每次通过 3G 连接时 UDP 端口都会改变

    我正在使用基于java的UDP套接字与3G模块进行通信 但是收到的数据包的端口 有时是IP地址 每次都会改变 这是非常令人惊讶的 这表明我无法为3G模块分配固定的IP 端口并与其通信 而只能依靠传入的数据包来获取目的地信息 有人能告诉我为什
  • ASP.net core 中的 OData 支持

    既然版本 1 已经发布 那么 ASP net core 现在是否支持 oData 我进行了搜索 但我找不到任何这样或那样的说法 编辑 现在可以在https www nuget org packages Microsoft OData Cor
  • 获取 C 中的时区 GMT 偏移量

    我正在使用标准mktime http linux die net man 3 mktime函数来转动struct tm转化为纪元时间值 这tm字段在本地填充 我需要获取 GMT 的纪元时间 tm has a gmtoff字段允许您为此目的设
  • 1e-9 或 -1e9,哪一个是正确的? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我被分配了
  • 如何在 CMake 中构建具有 2 个不同变量值的程序

    我最近移植了我的Qt项目来自qmake to CMake 我的主程序包含一个值 该值取决于 define指示 我想通过外部指定定义指令CMake并构建同一可执行文件的 3 个不同名称的版本 我该怎么做呢 我见过set target prop
  • 从 Doctrine 查询返回数组,而不是对象 - Symfony2

    我正在使用这个 this gt getDoctrine gt getRepository MyBundle MyEntity gt findAll array Query HYDRATE ARRAY 我认为应该确保它返回一个数组的数组 但它
  • Xcode:收到警告“从枚举类型 UIDeviceOrientation 进行隐式转换”

    完整警告 Implicit conversion from enumeration type UIInterfaceOrientation to different enumeration type UIDeviceOrientation
  • wpf:通过调度程序更新多个控件

    我正在使用 SerialPort 类中的事件侦听器从串行端口读取数据 在我的事件处理程序中 我需要使用通过串行端口传入的 xml 数据来更新窗口中的许多 30 40 控件 我知道我必须使用 myControl Dispatcher Invo
  • 创建镜像后 EC2 实例停止工作

    我对 AWS 完全陌生 我设法拥有一个运行 PHPMyAdmin 的实例 然后我立即创建了一个映像 EBS AMI 并且无法再连接到我的 phpmyadmin 界面 我知道这真的很愚蠢 但我不知道为什么会这样 谢谢 确保服务器上所有需要的服
  • make: *** [ ] 错误 1 ​​错误 [重复]

    这个问题在这里已经有答案了 我正在尝试在 gcc 上编译 Pro C 文件 但收到此错误 make MedLib x o Error 1 这是 make 打印的命令 usr bin gcc g fPIC m64 DSS 64BIT SERV
  • 将后缀附加到 csv 文件(或 SQLite 数据库)中的条目列

    我有一个相对较大的 csv 文件 1 2gb 大到我一台计算机上的 2gb RAM 对于一列中的每个条目 我想附加 1C 以便我可以与另一个数据帧 数据库表连接 合并 如果文件不是太大的话 使用起来会很方便read csv导入到data然后
  • findFragmentById 始终返回 null

    我正在 xml 布局中为我的片段定义一个 ID
  • 拉斐尔 js.沿曲线填充颜色

    我创建了一个圆 可以在其中选择沿圆圆周的两个点 我想填充这两点之间的部分 Demo http jsfiddle net jashwant CDBk6 如果你看到演示 我想填充两点之间的角度 JS function Raphael Rapha
  • Shell 变量扩展 - 使用 env 调用实用程序时的间接寻址

    我试图找出 env 即使用新环境调用 util 举个例子我的环境变量KDEDIRS usr在我当前的环境中 假设我输入 env i KDEDIRS home newkdedir env 这输出KDEDIRS home newkdedir正如
  • 最佳实践 - 将您的应用程序添加到 Android 共享菜单

    我的应用程序通过 TCP 连接发送文件 所有 mime 类型 因此我希望我的应用程序出现在 Android 共享菜单中 我将以下意图过滤器添加到我的 Activity 中AndroidManifest xml
  • Spring Boot AsyncRestTemplate SSLSocketFactory

    在 WebSphere 中部署 Spring Boot 应用程序 由于其 SSL 配置 我们需要显式指定 SSLSocketFactory 以确保应用程序使用 WebSphere 证书而不是默认的 Java 密钥 信任存储 通过 RestT
  • 从rails 3.1升级到rails 3.2时由于模块命名空间中的下划线而出现路由错误

    我们有一个 Rails 应用程序 并且有一个定义为 Api V1 Api V1 2 Api V1 3 等的 API 命名空间 在routes rb中 我们设置了以下内容 namespace api do v1 v1 2 v1 3 lates
  • Sun 提供了符合 XML-Enc 规范的 Java API?

    我正在寻找是否有如何执行 XML Enc 规范http en wikipedia org wiki XML Encryption http en wikipedia org wiki XML Encryption无需使用 Apache Sa
  • 类型错误: ping 不是函数

    我正在尝试制作一个不和谐的机器人来显示我的 我的世界 服务器统计信息和其他内容 快完成了 但是当我执行命令时 它会在终端中出现 TypeError ping is not a function 这是我的代码 const Client Ric
  • 防止滥用 libspotify 密钥

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