2017-03-15 1 views
1

アンドロイドアプリにはfacebookのログインしかありません。ここでFacebookのログインのみを使用するアプリからスコアを安全に提出するには?

は、サーバーで何が起こるかです:POSTリクエストが体内にFacebookのユーザーのアクセストークンを使用して送信されたときに

ユーザーが作成されます。

ユーザーがPOSTリクエストを経て作成されるたびに、APIトークンが生成され、次のように応答として送信:

{"message":"User Successfully Created","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"} 

サーバーで生成されたAPIトークンが格納されているので、私はこれをしましたアンドロイドアプリのローカルストレージにあり、他のリクエストをするために必要です。ユーザが既にサーバに存在する場合

次に、応答は

{"message":"User Already Exists!!","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"} 

なり、ユーザがアプリケーションを削除し、再度インストールする場合です。

今、スコアを提出し、PATCH要求はして送信することがある。

ヘッダ:

Content-Type:application/x-www-form-urlencoded 
api_token:ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo 
fb_id:xxxxxxxxxx 

ボディ:

distance:2 
golds:19 
xp:23 

(注:私がテスト上記の要求は、郵便局

今、問題は私が抜け穴を見つけたことです。

誰かがいつでも自分のFacebookのユーザーアクセストークンとそのFacebookのIDを見つけることができます。したがって、ユーザーがそのユーザーアクセストークンを使用してPOSTリクエストを行うと、api_token(「User Already Exists !!」というレスポンス)が返されます。そして、彼らがapi_tokenとfb_idを持っていれば、彼らは彼らが望むものに彼らのスコアを修正するPATCH要求をすることができます。

私は間違っていますか?このようにサーバーをハッキングしないようにするにはどうすればよいですか?

私を助けてください。私はapiデザインの初心者です。

おかげ

答えて

0

そのAPIトークンは、それはおそらく悪いことだ、全くアプリでそれらに利用可能である場合。アプリで利用できない場合、アプリ内のPOSTリクエストを作成して生データを取得するだけで、おそらくシステムをハックしたりテストしようとしていると言えます。

この場合、暗号化されていないAPIキーをPOST経由で最初に送信するのは悪い考えです。彼らのAPIキーがあなたのシステムに悪いことをするのに必要なすべてのものであれば、どうしてそれらを最初に彼らに渡すのですか?

あなたのアプリはそれらを覚えておく必要があるためです。

新しいユーザーであるサーバーmd5がAPIキーをハッシュし、保存するためにそれらを送信します。 既存のユーザーであるサーバーmd5がapiキーをハッシュし、保存するように送信します(必要な場合) 公式の既存のスコアが変更されました:app re-md5は既にハッシュされたapiキーをハッシュし、PATCHリクエストと共に送信します。サーバーには二重ハッシュされたAPIキーが付いたデータベースがあり、これを使用してユーザーを特定し、ユーザーをユーザーとして識別します。

関連する問題