6

私は現在、通信するためにバックエンドWebサービスを必要とするモバイルアプリケーション(最初はiOS)を構築しています。

このサービスは、モバイルクライアントのみがアクセスしたいデータを公開するため、サービスへのアクセスを制限したいと思います。

しかし、これをどのように実装すべきかについては少し疑問があります。私のアプリは認証を必要としないため、これらの資格情報を使用してサービスに対して認証することはできません。どういうわけか、リクエストが信頼できるクライアント(つまり私のアプリ)からのものであるかどうかを識別できる必要があります。これはもちろん、証明書を使用するだけでよいという考えにつながります。しかし、この証明書はアプリから抽出されただけで、誤用されたのではないでしょうか。

現在、私のアプリはiOSをベースにしていますが、後でandroidとWPも登場する予定です。

nodejsで開発することを期待しているWebサービスですが、これは最終的な決定ではありませんが、RESTfulサービスになります。

ベストプラクティスに関するアドバイスをいただければ幸いです。

4

1 に答える 1

6

簡単な答え: モバイル以外のクライアントからあなたの Web サイトにアクセスする人を完全に防ぐことはできません。ただし、それを難し​​くすることはできます。

簡単:

  • 非標準の HTTP ヘッダーを送信する
  • 一意のクエリ パラメータを設定する
  • 興味深い (またはあまり興味のない) ユーザー エージェント文字列を送信する
  • (他にもいくつか思いつくかもしれません)

難しい:

  • クライアントを識別するためのチャレンジ/レスポンス プロトコルを実装する
  • 独自の暗号化されたコンテンツのトランスポートとして HTTP を (アブ) 使用する
  • (他にもいくつか思いつくかもしれません)

もちろん、誰でもデータを抽出したり、コードを逆コンパイルしたり、HTTP 要求を再生したりできます。しかし、ある時点で、無料の Web アプリケーションにアクセスできても、アプリのリバース エンジニアリングに必要な労力に見合う価値がなくなるでしょう。

ただし、ここにはもっと基本的な質問があります。他のクライアントでサイトにアクセスすると、どのような害がありますか? あなたは言っていません。その情報がなければ、適切なソリューションを推奨することは基本的に不可能です。

于 2013-01-01T21:37:55.693 に答える