0

我正在开发使用 API 从服务器获取数据的 Flutter 应用程序。Flutter 应用程序是公开的,任何人都可以在不登录应用程序的情况下使用。一切正常。

我的问题:有什么方法可以识别 API 请求的来源。因为任何人都可以使用这个 API 来获取数据,这可能会导致服务器泛滥。

如果可以找出请求的来源,那么我可以处理仅来自我的 Flutter 应用程序的请求。

可能吗?

4

2 回答 2

0

使用 https 作为协议并向您的应用添加 api 密钥和客户端密码。

然后使用例如 http 基本身份验证或 OAuth 保护您的 api。

https://laravel.com/docs/7.x/authentication#stateless-http-basic-authentication

https://laravel.com/docs/7.x/passport

于 2020-07-28T08:22:07.077 回答
0

当第一个请求进入服务器时,发出一个令牌,例如(伪代码)

//here stringContainingData can be a json string having details about the client and the connection
token = MyHashingFunctionUsingAPassword(stringContainingData,MyStrongPassword);

发回令牌后,如果不拒绝,下一个 api 访问应该包含每个请求的令牌,如果令牌存在,请执行此操作

stringContainingData = MyDeHashingFunction(token,MyStrongPassword)
//verify data
mappedToken = stringToMap(stringContainingData);
if(mappedToken.containsKey('keyThatShouldBePresent') //acknowledge request
else //reject request

要拒绝进一步的泛洪,请从单个 IP 设置最大请求数/秒

于 2020-07-28T08:59:09.000 回答