0

質問を作成するために、架空のアプリを作成します。

ユーザーが街中のいくつかの場所を訪れると賞品がもらえる、一種の宝探しアプリを作成します。実際には、アプリは現在の緯度/経度を取得し、「宝の場所」のリストへの近さを確認し、宝の場所から 10 メートル以内にある場合は通知を受け取ります。

アプリは、基本的にデータベースに挿入するリモート スクリプトに http 投稿を行います。投稿パラメーターは、デバイスの uuid と訪問した場所になります。

攻撃者は簡単に Wireshark を監視し、スクリプトの名前とパラメータを取得できます。彼らはさらに進んで、apk を逆コンパイルし、ハッシュや難読化などの他のものを取得することができます。その後、curl を使用して意のままに投稿することができ、不正行為者以外のゲームは台無しになります。これは、私が書いたすべてのアプリには常に機密ではないデータがあり、それが一般に公開されてもかまわないため、実際に対処する必要がなかった問題です。

私は何をしますか?

4

1 に答える 1

1

あなたができる最善の考えは、安全な方法でデータを送信することです. 方法に関係なく、HTTPS を使用する方がはるかに適しています。これは盗聴者を効果的に防ぎます。これは、インターネット上の安全な通信の背後にある基本的な技術です。

サーバーと通信するためのプロトコルを除けば、まだ不安があります。基本的に、これらを克服するために機能する可能性のある 3 つの方法があります。

  1. プレーヤーの位置は、一定の間隔でサーバーに送信される可能性があります。それらがいずれかのエリアに十分近い場合、サーバーは応答します。おそらく、サーバーには、ポイント A からポイント B に到達するのに時間がかかることを知るのに十分なスマートが含まれている可能性があります。
  2. 一度に 1 つの場所をアプリに送信できます。ユーザーの追跡をアップロードして、場所が正しいことを確認することもできます。
  3. 場所は、一方向関数を介してプログラムに送信できます。その後、実際の回答をサーバーに送信できます。これに関する問題は、同じハッシュを返すために正確な場所を発見する必要があることです。ただし、GPS 座標は数メートルの精度しか得られない傾向があり、重要でない数字を示す傾向がないため、現在の場所の近くで複数の値をテストできます。一方向関数は、効果的な方法で計算するためにある程度の時間を必要とするでしょう。そうでなければ、悪者が都市のすべての平方メートルを単純にテストして、何が機能するかを判断するのは簡単なことです.

セキュリティの観点からの最善の方法は最初の方法です。アプリケーションは、その場所に到達するまで、どこに行くべきかを決して知らないためです。もちろん、これは不必要に何度もサーバーに ping を送信します。

于 2012-11-20T02:47:57.027 に答える