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