这可能是一个新手问题,但我会尝试创建一个有趣的辩论。
我知道有一些用于 API 基本身份验证、API 密钥、OAuth 2.0 的身份验证方法……所有这些方法都会在请求中添加标头或 formData 参数。
尽管您使用 SSL,但破解移动应用程序“通常很容易”(我现在正在考虑使用 Android:反编译应用程序、更改清单以允许自定义 SSL、再次编译并通过 SSL 代理嗅探所有请求)。
在这些请求中,我发现了很多身份验证密钥,我可以在控制台的其他调用中使用它们,毫无问题地模拟应用程序。
所以,现在我已经在移动应用程序中破解了一些 API,我的问题是:有没有办法保护移动应用程序中的 API?
我想知道一个安全层会限制每个“密钥”的请求数量。
我错了吗 ?我错过了什么吗?这是一个愚蠢的问题吗?
考虑我们有一个 api 端点(例如:REST)和一个 react web 应用程序来连接它
这就是我为认证和授权所做的
当用户发送登录请求时,我为该用户创建一个令牌(例如:JWT),然后用户可以使用该令牌发送查询或变异请求
为此,我将令牌保存在 localStorage 或 cookie 中,用户自己可以看到它
对于一个简单的应用程序,它可以,但是?如果我想让用户甚至无法使用此令牌,并且令牌仅在我的 React 应用程序(我的网站)中工作,该怎么办?
例如,如果 john doe 访问了一个网站,并且该网站为他创建了一个令牌,他可以复制此令牌并在第三方应用程序中使用它或创建一个机器人来调用该网站的 API
我想创建一个 api,即使它的用户也不能使用我的应用程序前端的令牌来调用 api
一些应用程序正在这样做,但我不知道如何,例如电报或推特或...
他们从服务器返回的数据是加密的
但是如果我们可以访问他们的网络应用程序的源代码,那么我们应该能够找到他们的加密令牌或方法,但我们不能这样做(我猜),我不知道他们是如何防止这种情况发生的
我读过 RSA,但如果我们在前端保留公钥,这不会有任何区别(对吧?)
那么有什么方法可以做到这一点?(防止调用特定 Web 应用程序的安全 API)