2016-06-01 16 views
0

たとえば、ユーザーの画像を取得しているとします。クライアントコードはmysite.com/api/getProfilePicture?user=000123と呼ばれ、私のアプリはロードする適切な画像のURLを送り返します。内部的には、/v2.6/{user_id}/pictureへのAPIコールは文字通り受信したユーザーパラメータを文字列に入れるだけです。私はこのサーバサイドを維持して、クライアントがプロフィール画像のどこから来るのか心配する必要がないようにしたいと思います。クライアントから提供されたFacebookのユーザーIDが実際に有効なユーザーIDかどうかを確認する必要がありますか?

セキュリティ上の問題ですか?悪意のあるユーザーがmysite.com/api/getProfilePicture?user=destructiveEndpointに電話をかけて/v2.6/destructiveEndpoint/pictureを実行したことがありますか?または、そのような破壊的なエンドポイントはありません(アプリのシークレットはここで使用されていないため)。 が厄介な終端点であるである場合、私はそれを使用する前に正しいユーザーIDを取得していることを確認する必要があります。だから、

答えて

1

あなたがちょうどあなたが得る任意の文字列を取り、グラフAPIのURLにどこかにそれを置く場合は、SQLインジェクションは、現在APIパラメータ注入:)

を来た後、それが不要な結果につながる可能性があるところ、理論的シナリオが想像しています、はい。

しかし、何かを作成/変更/削除できるすべてのAPIエンドポイントにはアクセストークンが必要です。実際には、/ pictureのエンドポイントはアクセストークンを必要としません。

API呼び出しに何か「注入」することができたとしても、APIは単に操作が有効なアクセストークンを必要としていると不満を持ちます。

私はアクセストークンを注入することもできますが、アプリの外でも同じAPI呼び出しを行う可能性があります。


今のところ、FacebookのプロフィールIDには数字のみが含まれています。入力を検証する場合は、それを確認します。 (FBエンジニアはすでに複数の機会に述べているが、これも将来変更される可能性がある)

+0

基本的に誰かがコンテンツを削除/変更するために操作することができます彼ら自身だけであるので、何の意味もありません。正しい? クッキーのクライアントサイドからトークンを取り出してリクエストすることを防ぐための本当の方法はありません。そして、私はそれが本当に問題ではないと思います。 – Paulywog

+0

彼らは自分のユーザーアクセストークンだけを持っている限り、自分/自分のアカウントに影響を与えるものを実行することができます。 /ドキュメントには、アクセス権トークンを盗んで人が何をする可能性があるのか​​、アプリの設定でアプリの秘密の証明を要求することで、APIリクエストのセキュリティを保護する章があります。 https://developers.facebook.com/docs/graph-api/securing-requests – CBroe

関連する問題