ここに私の問題があります:
私はモバイルアプリを持っており、ユーザーの位置に応じて情報を提供したいと考えています (FourSquare のようなものを考えてください)。しかし、ユーザーの位置が本物であることを確認する方法は?
つまり、クライアントが http 経由でサーバーへのリクエストを使用するとします。
悪意のあるユーザーは値を簡単に変更できます。
次に、値が正確であることを確認する方法は?
ここに私の問題があります:
私はモバイルアプリを持っており、ユーザーの位置に応じて情報を提供したいと考えています (FourSquare のようなものを考えてください)。しかし、ユーザーの位置が本物であることを確認する方法は?
つまり、クライアントが http 経由でサーバーへのリクエストを使用するとします。
悪意のあるユーザーは値を簡単に変更できます。
次に、値が正確であることを確認する方法は?
アプリにあるpgp暗号化をいつでも使用でき、メッセージをデコードするサーバーにパケットを送信すると、リクエストを送信したプログラムであることがわかります。
したがって、ユーザーが座標を偽造したい場合、実際にそれを行うには、電話にあるソフトウェアをハッキングする必要があります。
それがあなたにいくつかのアイデアを与えることを願っています...
一方、サーバーへの最初の接続時にハッシュを発行し(認証など)、モバイルアプリケーションで簡単な計算を行うことができます: x your_hash と y your_hash またはそのようなもの(簡単なのでもっと複雑にする必要があります)推測する) サーバー上: http://www.myserver.com/getdata?lat=x&lon=y 次に: アプリのサーバー側: lat = lat/your_hash lon = lon/your_hash now if the lat/ lon はグリッドから外れているので、JochenJung が海のどこかで言ったように... リクエストは無視してかまいません。リクエストを送信したユーザーを特定したいという理由だけで、クエリ文字列に特定の識別情報が必要になります。これを追加の変数として使用して、より良い結果を作成できます。
それはいけません。すでにおわかりのように、クライアントはサーバーに送信されたリクエストをいつでも操作できます。
サーバー側でできる唯一のことは、ありそうもない座標をフィルタリングすることです(たとえば、座標の意味に応じて海で)。
私も同じことを考えていましたが、それは不可能だと恐れています。私が持っていたいくつかのアイデア:
誰かが電話を騙して、GPS 座標を別の場所に設定する可能性があります。@JochenJung が言うように、リクエストはいつでも変更できます。