2012-01-02 19 views
0

私は今iPhoneのアプリでクリアテキスト文字列として保持しているウェブ上の外部サービスへのパスワードを心配しています。問題は、ハッカーがアプリを購入し、それを脱獄した電話機にダウンロードする場合です。彼はバイナリコードを検査してパスワード文字列を抽出し、混乱を引き起こすことができます。iPhoneアプリに保存されている外部Webサービスのパスワードをどのように保護しますか?

これは一般的な問題であり、共通の解決策があると確信していますが、文字列を保護する方法が精神的にブロックされています。私が何らかの形の暗号化を利用する場合、私は暗号化に関する国際法を開示するためにワームの缶を開けませんか?とにかく、パスワードを使用するためにアプリ内でプログラムによって復号化が行われるので、それはリバースエンジニアリングすることができます。

ここで推奨するルートは何ですか?どうも。

答えて

1

答えは一度明記されています。しかし、長い道のりのためではありませんでした。 Webサービスのパスワードは、ネットから何かを取得する前にアプリによって必要とされました。たとえそれがキーチェーンに入れられたとしても、アプリのバンドルではクリアテキストであり、最初に実行される前にパスワードを探している喜びの探求者のための準備が整いました。

答えは、デスクトップでWebサービスの資格情報を暗号化し、暗号化された文字列をアプリに入れて、必要に応じて後で復号化できるようにすることでした。これにより、アプリケーションを実行する前に、脱獄された電話機によってクリアテキストとして検査されなくなりました。

+0

別のオプションでは、httpsを使用して資格情報を送信しています。 httpsが資格情報を保護するため、送信する前にパスワードを暗号化する必要はありません –

0

パスワードはKeychain(あなたのためにリンクされたドキュメント)に保存してください。

NSUserDefaultsでは決してありません(テキストをクリアするには、すべてが次善策になります)。

Here is a tutorial with some useful infoより詳しい情報を得ることができます。

+0

これは、私のアプリが実行されていると想定しています。ダウンロードされ、コードを実行せずに検査された場合は、キーチェーンに登録する前にアクセスされています。ダウンロードやインストールの完了時に私がコントロールできるAPIはありますか?それはそれをするだろう。私と一緒にスティックして、多分私が何かを逃している...(あなたが提供した良いリンク) – Ric

+0

あなたのアプリを起動するまで、あなたのアプリのコードはアクセスされません。あなたのウェブサイトのパスワードをコードのどこかに隠しておけば、悪意のある人がデコンパイルしてサイトアクセスパスワードを知ることができると思います。おそらく、最初の起動時に暗号化された形式でパスワードを配送する必要があります(まだキーチェーンに存在しない場所)。 –

+0

それは可能性です。たぶん私はまた、明白でない、連続していない命令からパスワードを「組み立てる」こともできます。しかし、これはセキュリティの貧弱な方法として受け入れられています。私は、誰かがこの問題に対処し、パスワード文字列の外部通信を必要としないアプリ内ソリューションを持っていることを期待していました。 – Ric

関連する問題