Android和SafetyNet确保对API的调用仅来自我的应用程序

Android和SafetyNet确保对API的调用仅来自我的应用程序,android,rest,security,authorization,safetynet,Android,Rest,Security,Authorization,Safetynet,我的Android应用程序向我的后端进行了一些REST调用。我希望只有并且只有我的应用程序有权调用端点 我打算用谷歌的SafetyNet来存档 1) My app ask my server fora random nonce 2) My app ask for an .attest() 3) My app receive the JWT 4) My app call one of my endpoint by providing the JWT 5) My server calls Googl

我的Android应用程序向我的后端进行了一些REST调用。我希望只有并且只有我的应用程序有权调用端点

我打算用谷歌的SafetyNet来存档

1) My app ask my server fora random nonce
2) My app ask for an .attest()
3) My app receive the JWT
4) My app call one of my endpoint by providing the JWT
5) My server calls Google server to verify the JWT is correct
6) If yes, the call is processed, rejected otherwise..
我的问题是:对.detect()有利率限制吗? 我的应用程序将每隔2秒或3秒发出几次POST请求


上述逻辑在这种规模下有效吗?是否有其他方法可以确保发布到我的端点的数据来自我的应用程序,而仅来自我的应用程序?

是的,如果您频繁调用EXTEST(),您将被限制。撇开速率限制不谈,您不希望每隔几秒钟调用一次,因为您可能会开始注意到不利的性能影响(API调用在计算上很昂贵,而且速度不快)

您描述的逻辑很好,但我建议您仔细考虑需要保护哪些特定端点操作。通常,将SafetyNet认证与特定的高价值操作(例如登录或支付交易)一起使用是合适的。对于您提出的每一个POST请求,这样做可能没有什么增量好处

根据您的用例,会对如何使用API结果提出额外建议:

理想情况下,您应该使用SafetyNet认证API作为反滥用系统的一部分,而不是应用程序的唯一反滥用信号,作为额外的深度防御信号


是的,如果频繁调用EXTENSIT(),您将受到限制。撇开速率限制不谈,您不希望每隔几秒钟调用一次,因为您可能会开始注意到不利的性能影响(API调用在计算上很昂贵,而且速度不快)

您描述的逻辑很好,但我建议您仔细考虑需要保护哪些特定端点操作。通常,将SafetyNet认证与特定的高价值操作(例如登录或支付交易)一起使用是合适的。对于您提出的每一个POST请求,这样做可能没有什么增量好处

根据您的用例,会对如何使用API结果提出额外建议:

理想情况下,您应该使用SafetyNet认证API作为反滥用系统的一部分,而不是应用程序的唯一反滥用信号,作为额外的深度防御信号


这就是我所想的是的。我的用例i的“问题”是,我的API只有一个端点(post),所有用户发布的数据将在公共地图上共享。因此,如果没有像safetyNet这样的东西,人们就很容易开始发布虚假数据。我想我的另一个选择是不每秒调用POST端点,而是每隔几分钟左右调用一次。在android端,我只是聚合数据并批量发送。@Johny19在你的应用程序开始发布地图数据之前,是否需要登录步骤?即使没有,您也可以发出令牌以响应初始“启动”请求(应用程序第一次打开时,受SafetyNet认证保护),该请求将保存在内存中并包含在后续的数据发布中。我要提醒你的是,仅SafetyNet认证并不是一个神奇的反滥用API,因此仅此一项可能无法解决你所设想的所有问题。这就是我所认为的是。我的用例i的“问题”是,我的API只有一个端点(post),所有用户发布的数据将在公共地图上共享。因此,如果没有像safetyNet这样的东西,人们就很容易开始发布虚假数据。我想我的另一个选择是不每秒调用POST端点,而是每隔几分钟左右调用一次。在android端,我只是聚合数据并批量发送。@Johny19在你的应用程序开始发布地图数据之前,是否需要登录步骤?即使没有,您也可以发出令牌以响应初始“启动”请求(应用程序第一次打开时,受SafetyNet认证保护),该请求将保存在内存中并包含在后续的数据发布中。我要提醒您,仅SafetyNet认证并不是一个神奇的反滥用API,因此仅此一项可能无法解决您所设想的所有问题。