2016-12-14 1 views
1

私のAndroidアプリは私のバックエンドに対していくつかのREST呼び出しを行います。私は、私のアプリケーションだけがエンドポイントを呼び出す権限があることを願っています。AndroidとSafetyNetは、APIへの呼び出しが私のアプリからのものであることを確認します

Googleの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.. 

私の質問は:.attest上のレート制限は、()がありますか? 私のアプリは2秒または3秒の秒ごとに複数のPOSTリクエストを行います

上記のロジックはこのスケールで動作しますか?私のエンドポイントに投稿されたデータが私のアプリケーションから来ていることと私のアプリケーションから来ていることを保証できる他の方法はありますか?

答えて

3

はい、頻繁にattest()を呼び出すと抑制されます。速度制限はさておき、パフォーマンスの低下に気付き始めるかもしれないので、数秒ごとに呼び出すことはあまり望ましくありません(API呼び出しは計算コストが高く、高速ではありません)。

あなたが説明するロジックは良いですが、保護する必要がある特定のエンドポイントアクションについて慎重に考えることをおすすめします。一般的には、ログインや支払い取引などの特定の高価値アクションとともに、SafetyNetアテステーションを使用することが適切です。あなたが行うすべてのPOST要求に対してそうすることは、少しずつ利益をもたらすかもしれません。

あなたのユースケースによっては、documentationは、APIの結果を使用する方法についての追加提案を行います

理想的には、あなたに追加の深い防衛信号としてSAFETYNET証明APIを使用する必要がありますあなたのアプリの唯一の不正行為のシグナルではなく、不正行為防止システムの一部です。

+0

これは私が「はい」と思ったものです。私のAPIがエンドポイント(ポスト)を1つしか持たず、すべてのユーザーが投稿したデータが共通のマップ上で共有されるという私のユースケースの「問題」。安全なネットのようなものがなければ誰かが偽のデータを投稿し始めるのが簡単です。私の他の代替案は、POSTのエンドポイントを1秒ごとに呼び出すのではなく、1分ごとにアンドロイド側でデータを集約してバルクで送信することだと思います。 – Johny19

+0

@ Johny19あなたのアプリが地図のデータを投稿する前にサインインの手順が必要ですか?そうでなくても、最初の「開始」リクエスト(SafetyNet Attestationで保護されているアプリが初めて開かれたとき)に応答してトークンを発行することができます。 私はSafetyNet Attestationだけが魔法の悪用防止APIではないことに注意したいと思います。したがって、これだけではあなたが想定しているすべての問題を解決することはできません。 –

関連する問題