RESTful API认证&;安全


RESTful API Authentication & Security

我正在开发一个Android和iOS应用程序,该应用程序将使用我在独立服务器上开发的RESTful API。应用程序只需在端点处进行操作,即可更新数据库中的数据,并在需要时检索信息。我的问题不是这样做,API的架构已经设置好了,我只需要考虑实现它的最安全的方法

我有一个API密钥系统,它要求API的任何使用都必须与请求配对,这将阻止任何没有密钥的人访问API。这很有效,但我担心那些更有决心突破体制的人。特别是在Android方面,应用程序可以被反编译,并且(一些)代码可以被查看。我很确定字符串可以被查看,所以我担心如果有人反编译应用程序,他们将获得API密钥,并能够访问API。

我正在寻找使API更安全的建议。我已经考虑过在更新信息时将另一个唯一值与API密钥配对,但我不确定这是否也能很好地工作。

任何建议都非常感谢。

您担心应用程序可能被反编译,这是对的。代码和字符串存储在clear中。事实上,这是相当琐碎的事情

我听说有人看了两个应用程序:一个包含明文形式的电子邮件服务密码和用户名,对垃圾邮件发送者非常有用。另一家公司的"随机"数字算法被曝光,黑客可以生成今天的"随机数字",并使用公共交通设施免费乘车。

您可以通过以下方式提高标准:

  • 用工具混淆代码。一些工具将提供加密字符串的功能
  • 在每次新安装时使用新的加密密钥手动加密应用程序中的敏感字符串,拆分加密密钥并将其隐藏在几个不同的位置,例如部分在代码中、部分在数据库中和部分在操作系统中,并将ACL应用于外部位置
  • 使用传输安全性(如TLS)降低中间人攻击的风险
  • 在服务器端使用API速率限制器
  • 引入地理定位服务,查看是否在同一时间从不同位置使用相同的API密钥