2012-03-28 6 views
3

自分のウェブサイトの特定の部分の認証情報を自分のアプリにコードする必要があります。アプリが「デコンパイル」され、ユーザー名とパスワードが公開される可能性はありますか?アプリをデコンパイルすることは可能ですか?

NSURL *url = [NSURL URLWithString:@"https://predefinedUsername:[email protected]"]; 
+3

多分あなたはここで読むべきです:http://stackoverflow.com/questions/3919765/how-safe-is-information-contained-within-iphone-app-compiled-code –

+6

これをプレーンテキストアプリのチャンスは、逆コンパイルなしで表示されることです。 – Hyperbole

答えて

6

はい、可能です。あなたのアプリケーションにコンパイルされたものがあれば、それは誰かがどこかで発見することができると仮定します。現時点では不可能であっても、未知の未知の攻撃に対して脆弱な情報の凍結記録を作成しています。

実際に、認証するタスクを実行する必要があります。それを行うには百万と一つの方法があり、それらのすべてのために、それを間違って行う百万と二つの方法があります。 :)

具体的な要件について詳しく知ることなく、「それを単純にして保存したり、何もクリアテキストで送信しない」ということ以外のことは実際には不可能です。

+0

ありがとうございました。もっと人気のあるアプリ、特に雑誌がそれをやっているかどうか分かりますか?コンテンツは安全なウェブサイトからダウンロードされ、ユーザ名とパスワードは毎回同じではありませんか?なぜ人々はアプリを逆コンパイルして問題を無料でダウンロードできないのですか?または私はこれを間違った方法で見ていますか?ありがとう。 –

+1

@JackHumphries使用可能なオプションはプラットフォームによって異なります。アプリのすべてのインスタンスで共有されている単一のハードコードされたアカウントを持つ代わりに購入済みのトークンを持っている場合、有料の購入ごとにバックエンドで新しいアカウントを作成します(乱用/共有/払い戻しの場合は取り消すことができます)。始めなさい。 AppleのApp Storeインフラストラクチャについては、Androidマーケットについて少ししか分かりませんが、私はあなたにそれ以上の具体的なヒントを与えることはできませんでした。 –

2

あなたの例では、URLリクエストでプレーンテキストで送信するときに、逆コンパイルする必要なく、ユーザー名とパスワードが公開されます。スニッファやMITMサービスを持っている人なら誰でもそれを外に出すことができます。より良いアプローチは、http * s *プロトコルを介してSSLを使用することです。さらに進んで、ランタイム時に資格情報の入力を求めたり、アプリケーション内に暗号化されたバージョンを保存したりすることができます。

+0

ありがとうございます。すべての情報はSSL経由で送信されます。アプリ内に暗号化された証明書のバージョンを保存すると言ったときの意味をさらに説明してください。サーバーに送信する必要があるときに、どのように復号化しますか?どうもありがとう。 –

5

@Hyperbole氏によると、ユーザー名とパスワードをプレーンテキストで保存すると、実行可能ファイルに表示されます。文字列の実行可能ファイルを調べることは非常に自明ですが、通常は悪意のある人が試してみるのが最初です。

iTunesでダウンロードしたアプリを右クリックして、[Finderで表示]を選択します。あなたのデスクトップ上にアプリケーションのコピーを作成し、AppName.ipaからAppName.zipにアプリケーションの名前を変更します。ダブルクリックして解凍し、フォルダ内を見ます。ペイロードフォルダに移動して、アプリケーションのように見えるが、アイコンのための十字のある大きな円があるAppNameというファイル(おそらく唯一のファイル)を右クリックします。パッケージの内容を表示するを選択します。スクロールして、拡張子のないAppNameというファイルと緑色の単語「exec」をアイコンとして含む黒い矩形を見つけます。テキスト編集または別のテキストエディタでそのファイルを開きます。あなたはこれのほとんどが無作為なシンボルやその他のいたずらであることに気付くでしょうが、時にはプレーンテキストを見るべきです。コンパイラは文字列定数を受け取り、ほとんどの場合コンパイルするときにアプリケーションに直接埋め込みます。

コンテンツにアクセスするには、どの雑誌アプリや他のユーザーがアクセスするのか尋ねました.-サーバーがアプリ内購入の領収書を確認した後、サーバーが記録するさまざまな方法がありますが、あなたのiTunesアカウントに固有の識別子。あなたがその雑誌の特定の問題を購入したと言っています。次に、あなたのアプリはそのファイルをサーバーから要求し、プロセスの要求に識別子を追加することができます。サーバーは、データベースを参照してコンテンツを購入したと判断したら、ファイルで応答します。

その他のソリューションには、固有のキーの署名/ハッシュが含まれています。

2

デコンパイルせずにアプリケーションのバイナリに対して '文字列'を実行するだけで簡単にこれらの資格情報を回復できるので、これは非常に悪いことです。

初めてアプリを起動したときに認証情報を入力するようダイアログボックスをポップアップ表示できませんか?あるいは、ファイルに暗号化されたファイルを格納しておき、ユーザーに代替の認証情報を要求することもできます。鍵を派生させるパスコードですが、パスコードが長い場合を除き、決定された攻撃に耐えられません。

関連する問題