我正在使用Flutter应用程序,该应用程序使用API从服务器获取数据。 Flutter应用程序是公开的,任何人都可以使用而无需登录该应用程序。而且一切正常。
我的问题:有没有办法识别API请求的来源。因为任何人都可以使用此API来获取数据,这可能导致服务器泛滥。
如果可以找出请求的来源,那么我可以处理仅来自Flutter应用程序的请求。
有可能吗?
答案 0 :(得分:0)
使用https作为协议,并向您的应用添加api密钥和客户端密钥。
然后通过以下方式保护您的api: http基本身份验证或OAuth。
https://laravel.com/docs/7.x/authentication#stateless-http-basic-authentication
答案 1 :(得分: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设置最大请求数/秒