我正在开发使用 API 从服务器获取数据的 Flutter 应用程序。Flutter 应用程序是公开的,任何人都可以在不登录应用程序的情况下使用。一切正常。
我的问题:有什么方法可以识别 API 请求的来源。因为任何人都可以使用这个 API 来获取数据,这可能会导致服务器泛滥。
如果可以找出请求的来源,那么我可以处理仅来自我的 Flutter 应用程序的请求。
可能吗?
我正在开发使用 API 从服务器获取数据的 Flutter 应用程序。Flutter 应用程序是公开的,任何人都可以在不登录应用程序的情况下使用。一切正常。
我的问题:有什么方法可以识别 API 请求的来源。因为任何人都可以使用这个 API 来获取数据,这可能会导致服务器泛滥。
如果可以找出请求的来源,那么我可以处理仅来自我的 Flutter 应用程序的请求。
可能吗?
使用 https 作为协议并向您的应用添加 api 密钥和客户端密码。
然后使用例如 http 基本身份验证或 OAuth 保护您的 api。
https://laravel.com/docs/7.x/authentication#stateless-http-basic-authentication
当第一个请求进入服务器时,发出一个令牌,例如(伪代码)
//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 设置最大请求数/秒