我一直在进行大量有关 Android 或 IOS 移动应用程序 api 安全的搜索。
几乎所有示例都告诉用户以某种方式提供用户 ID 和密码以换取令牌。
但是如何防止别人在未经我同意的情况下使用我的api呢? 面对以下场景:
其他开发人员执行 rev。我的应用程序中的工程师创建了自己的应用程序并开始在未经授权的情况下使用它。
如何预防?
简短回答:你不能。
更长一点的答案:如果你知道自己在做什么,你总是可以对给定的应用程序进行逆向工程并使用它的 api。您只会让它变得更加困难和耗时,通过令牌和设备 ID 或用户名使用身份验证是一个很好的第一步。除此之外:为什么要对外人关闭你的 api?如果你的服务器代码写得好,就没有什么可担心的。
您也许可以在法律基础上保护您的 API 并起诉使用它的开发人员,但这是一个完全不同的话题。
有关保护 API 和通过 API 保护内容的一些说明。假设您创建一个服务器,您可以在其中发送用户/密码并接收令牌(如果该组合正确)。对于帐户页面,您发送所述令牌,服务器验证该令牌是否有效并返回“您的”帐户页面。您保护了 API 的实际内容。这显然是非常有可能的,而且几乎是必须具备的,除非您没有特定于用户的数据。 但是仍然每个人都可以从他们的自定义应用程序发送完全相同的初始请求,发送用户/通行证并再次接收令牌等。您无法真正阻止请求本身,甚至无法确定它不是由某些未经授权的服务发送的由你。您可以沿着请求发送一些哈希值,以通过混淆来添加一些安全性,但由于您的应用程序必须计算它们,因此逆向工程师也可以。
SignUp API 可用于创建用户,并登录以返回该用户的令牌。只有当恶意开发者拥有凭据时,他才可以访问令牌和身份验证 API。还有一些关于 DDOS 攻击的内容,因此您可以编写逻辑来暂时阻止点击频率较高的 IP。
您还可以存储签名用户的设备 ID,这对于您的场景来说似乎很空闲。仅接收来自该设备 ID 的点击。同样,用户可以使用其凭据添加更多设备。我认为即使谷歌也这样做(如果用户信用从新设备登录,则生成警报,并在用户确认时将该设备添加到列表中)。希望这有帮助。