2016-10-26 9 views
1

私は概念的な質問があり、誰かが助けてくれるほど親切であるかどうかを知りたいと思っていました。モバイルAPP - API認証の概念

簡単な例を使用して私の見解を説明します。

私はNode.JS + Express + MongoDBをバックエンドとして、単純なRESTFul APIを開発しました。 APIは、Androidゲームアプリからのヒットコアを保存します。トークンは秘密鍵と信頼できるユーザ名/パスワード(ハー​​ドコードされているかどうか)から生成されるトークンベースの認証を使用します。私はまだ安全性について考えて疑問を持っている

しかし、すべての開発者が簡単にAPIのバックエンドエンドポイントを見つけて、自分のユーザー名とパスワード(またはでそれを使用することができますので、...

リバースエンジニアリングは、ケーキの一部でありますハードコーディングされたもの)を使用してトークンを取得します。

次に、トークンは、APIを介して偽のハイスコアを挿入するために使用されます。

私の質問は以下のとおりです。

  • は、このセキュリティホールを回避するための方法はありますか?
  • RESTFull APIを使用して、サーバーのバックエンドとモバイルアプリを接続する正しい方法はありますか?
  • これは、バックエンドDBにデータを保存するAPP-Server通信を開発する正しい方法ですか?

ハードコードされたユーザー名とパスワードが含まれているコードを見つけることはできますが、これは解決できません。

PD:ユーザーは私の質問が広すぎると言います。私は3つの具体的な質問をしました。トピックは、APIに接続するためのアプリ情報の可視性を避けることです。私はあまりにも答えがあることを知っていますが、私は解答がほしくない、唯一の調査方法です。

+0

あなたはあなたの最初の質問を守ることができます。あなたの2番目の質問の答えははいです。 Rest APIを実装する必要があります。 –

+0

よろしくお願いいたします。秘密のオブジェクトやメソッドを暗号化して他の人がデバッグするのを難しくするのが最良の解決策です。ありがとう – WikiCode

+0

よく知られているAPIユーザーアクセスが統計を更新することを許可しないでください。または、トークンベースの認証を拒否し、アプリを使用して許可するだけです。おそらくスコープを使用することもできます。 –

答えて

0

これを行う完全な方法はありません。理論的には、検証メカニズム(トークン生成)を含め、すべてをデバッグすることができます。

モバイルAPIを使用すると、モバイルアプリがバックエンドと通信し、ほとんどの場合うまく機能します。しかし、あなたの場合は、基本的にAPIがあなたが持っているAndroidアプリを介してのみ使用されていることを確認したいです。これは、通常、通信プロトコルを暗号化し、他の人がそれをデバッグするのを困難にすることによって行われます。したがって、あなたのアプリは、アプリケーション/サーバの内部を知らないと解読するのが難しい方法で通信を暗号化します。しかし、これは最初からやることは難しいです。

既成の解決策が必要な場合は、ハイスコア、アチーブメントなどのためにGoogleのPlay Game Servicesを使用できます。十分安全であるはずですが、現在の状況にどのような影響があるかは言えません。

+0

ありがとうございます。ハイスコ​​アの例は理解しやすいようにすることですが、アプリはより複雑です。それから、私はコードを解読してデバッグするのを難しくします。 – WikiCode

+0

@WikiCode主要なゲーム開発者(BlizzardやPokemon Goなど)もまったく同じ問題を抱えていることに注意してください。あなたが正しいことをしたいのであれば、これは簡単なことではありません。 – Shade

+0

私は知っている、我々はその意味で創造的でなければならない – WikiCode