0

シナリオは次のとおりです。

2 つのクライアントからアクセスされている Web API があります。

  • 縮小された Javascript で記述された Web アプリ
  • iOS アプリ

SSL はすべて、API をホストするサーバー上でセットアップされており、正常に動作します。API は一種の位置情報検索アプリであるため、ユーザー認証はありません。

ただし、Web アプリと iPhone クライアントだけが実際に API にリクエストできるようにしたいと考えています。iPhone クライアントの場合は簡単です。サーバーとアプリ間の共有シークレットで十分です。また、SSL で暗号化されているため、盗み見される心配はありません。

しかし、Web アプリの場合、同じソリューションは機能しません。コードに文字列をそのままにしておくことはできません。暗号化されていたとしても、誰かが必要とするのはそれだけです。

基本的に、私はこの問題の良い解決策を探しています。使用を許可されているクライアントにのみ保持されるようにしたいだけですが、おそらくやり過ぎだと思うOAuthを実装せずにどうすればよいかわかりません。何か案は?

ありがとう!ダン

4

1 に答える 1

2

それはできません。oauthでも。iOS アプリが安全であると仮定しても、それは間違いです。逆コンパイルできるからです。クライアント上で実行されるすべてのコードは、改ざんされる可能性があり、彼が言うとおりの人物であるとは信頼できません。

唯一の問題は、あなたが提供する API が十分に価値があるかどうか、そして誰かがそれをハッキングするためにどれだけの手間をかけたいかということです。そして、それをハッキングしたい人のために、あなたはどれだけそれを作りたいと思っていますか.

iOS版は確かにjavascript版よりずっと安全です。Web アプリケーションでは、コードを難読化してハッキングを困難にすることができます。(iOS で使用するつもりがない場合) Java またはフラッシュを使用して、署名コードをさらに非表示にすることができます (リクエストに HMAC 署名を付けます。共有シークレットを送信するだけではいけません。SSL は安全だと思うかもしれませんが、しかし、URL が暗号化されるまで少し時間がかかります....)。

「大物」がこれに対処する方法は次のとおりです。

  • 何を構築しても、誰かがそれをハッキングできると想定してください (たとえば、意図したものとは別の目的で API を使用します)。
  • これが実際にどれほど悪いことか考えてみてください (注: 彼らはその上でビジネスを構築することはできません。訴訟に対して非常に脆弱です)。一匹狼が API を使用した場合、それは本当に世界の終わりですか。
  • 一匹狼のことが気になるなら、できるだけ難しくしてください (しかし、正直なところ、2 開発者月を費やすよりも、一匹狼からいくらかのお金を失う方が安上がりではありませんか?)
  • なんらかの方法で API をハッキングすることに真剣に関心がある場合は、ハッカーとの理解を深めるようにしてください (たとえば、専制君主化に対する Spotify の反応が気に入っています。私たちの音楽を盗んだり、ビジネスモデルを回避したりするのは簡単ですが、私たちはあなたをブロックしようとはしません。」)
于 2012-10-21T14:17:37.323 に答える