2010-12-13 7 views
3

私はPHPベースのウェブサイトに接続する必要があるiPhoneアプリケーションを作成しています。 iPhoneアプリはレコードを取得して追加します。私は、WebサイトとiPhoneアプリの間の通信がAPIキーによって制御されるべきだと推測しています。 iPhoneアプリはそれを提供し、ウェブサイトでそれをチェックします。iPhoneアプリでAPIキーを安全に保存していませんか?

iPhoneアプリケーション自体にそのAPIキーを保存する必要があると思います。だから私の質問。 iPhoneアプリケーションにAPIキーを危険に保存していますか?誰かが何とか私のAPIキーにアクセスしてiPhoneアプリを偽装してウェブサイトにアクセスできないのですか?またはこれはかなり難しいですか?私が間違った方法を考えているなら、より良い方法があるかどうか教えてください。

+2

どのようなAPIとキーがありますか?それがOAuthの 'application_key'と' application_secret'であれば、**あなたは**それらを電話に保存しなければならないので、これとは何の関係もありません。そして、はい、それらを抽出し、APIがあなたが手動で行うことができるすべてのことを行うことが可能です。 – zerkms

答えて

10

あなたはそれを本当に秘密にしておく必要があるかどうかにかかわらず、あなたはカジュアルなハッカーから身を守るために、とにかにそれを暗号化し、難読化する必要があります。

一方、私はあなたが決定的なハッカーを止めることはできないと信じています。脱獄、gdbとトラフィックスニファの組み合わせは、あなたが考えることができるほぼすべての保護を無効にします。そのような保護に重点を置く投資はほとんど意味をなさないので、多くの時間と労力を浪費し、APIキーをハック可能にするという妥協点を見つけなければなりません。

私は、App Storeから取得したバイナリが暗号化されているため、個人的には、アプリケーションバイナリ内の難読化されたフォームでAPIキーを使用するというアイデアが気に入っています。 PT_DENY_ATTACHを使用した小さなptrace()ハッカーは、gdbを通してアプリケーションに到達することをさらに複雑にしますが、完全に防ぐことはできません。チャンスは、これはあなたのアプリケーションがトークンの形式で解読された形でインターネットの周りに浮かべないようにするのに十分です。トラフィックをスニッフィングするのはばかげて簡単で、jailbreakingを必要としないので、HTTPSを使用する必要があります。

さらに重要な考慮事項です。 HTTPSが不安定で、HTTPリクエストでAPIキーを送信する必要がある場合は、上記のすべてを忘れてしまいます。ネットワーク上でプレーンテキストで送信された場合、アプリケーションバンドル内のキーを保護する意味がありません。

-1

鍵ストアサービスを使用してMacストアのパスワードのように鍵を保存することができます.100%は保証されていませんが、パスワードを暗号化して他の手持ちの安全な砂場に保管していると思います。(もちろん、砂場はjailbroken Costiqueが言及したような適切なツールとiPhone)

に見る価値どちらの方法:

http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

しかし、間違いなくHTTPSを使用してそれ以外の場合は、誰もが多くの努力なしでそれを盗聴することができます。

+1

これはユーザーのパスワードを格納するためのものです。開発者のキーはアプリに含める必要があります – user102008

関連する問題