以API为中心的应用程序


API Centric Applications

因此,我正在尝试开发一个应用程序,其中整个后端都基于API,这允许跨平台提供更大的灵活性。

我遇到的一个小问题是,我希望每个任务都通过API执行,这意味着每个任务都是作为用户执行的,而不是应用程序本身,这样用户也可以从应用程序外部进行相同的API调用。

我使用强制HTTPS作为标准,所以据我所知,目前没有理由再次加密数据。但我的两个主要问题是:

  1. 实现API安全性的最有效和最高效的方法是什么?

  2. 如何在应用程序中最好地实现每个用户的API请求?

如需澄清,请发表评论。

使用HTTPS,您不需要重新加密,但前提是您还可以防止中间人攻击。你可以通过证书固定来实现这一点,这意味着应用程序验证服务器证书的真实性,以检查服务器是它所说的服务器,也是应用程序所期望的服务器。你可以更进一步,让服务器检查应用程序的身份,尽管你说过用户可以在应用程序之外访问,所以应用这些检查在技术上可能很有挑战性。

大多数人使用API密钥来增加一个安全级别,尽管这并不完全是安全的,它依赖于用户和应用程序代码不公开这些密钥。

这扩展到了一个用户令牌,它是暂时的,需要定期(或明确地按需)重新创建。因此,用户登录后会有一个临时令牌,他们可以使用该令牌在短时间内验证他们提出的每个请求(可能仅限于该设备)。

理想情况下,所关注的数据将使用只有用户知道的密码进行保护,而不是存储在任何设备或服务器上。因此,除了识别和用户会话验证之外,数据不会以未加密的形式离开设备

你到底能做到什么取决于上下文。如果服务器正在处理数据,而不仅仅是保存和返回/转发数据,那么存在明显的局限性,您的安全性将更多地成为传输安全和密码/密钥存储的问题。