6

iOS 向けのアプリを開発する予定で、HTML5、CSS、および Javascript を使用したいと考えています。最終的なアプリは、Xcode と を使用してネイティブ アプリとして実装する必要がありUIWebViewます。

最終的なアプリで自分の html ファイルを隠したり保護したりできますか? Xcodeの「Supporting Files」というフォルダーにファイルを配置する必要があります。したがって、アプリを購入した後、.ipa ファイルを解凍することで、誰でもプレーン ファイルを表示できますよね?

4

3 に答える 3

9

保護の程度に応じて、データを保護する方法はたくさんあります。カジュアルなハッカーだけからの保護を最小限に抑えるために、文字列難読化アルゴリズムを使用して、HTMLコンテンツをNSStringsとして難読化および難読化解除することができます。これを行う例を次に示します。私はその特定のコードを使用していませんが、データが実際にそれほど機密性が高くない場合を除いて、テクニックとして難読化を実際に推奨していません。

より良い解決策は、HTMLコンテンツを暗号化することですが、それはより多くの作業であり、現在の場所やアプリの配布場所によっては、エクスポート制御の問題が発生する可能性があります。

暗号化には、多くのオプションがあります。

1) これはのようなものの安全なバージョンを提供するオープンソースの実装ですNSUserDefaultsregisterDefaults:ただし、そのコードに相当するものは表示されないため、アプリを初めて実行するときに、Webからコンテンツをダウンロードする必要がある可能性があります。PDKeychainBindingsただし、暗号化して文字列値として保存することもできます。その後の実行では、次のように保存されたHTML 「ファイル」を抽出できます。

NSString* webPageContent = 
    [[PDKeychainBindings sharedKeychainBindings] valueForKey: @"index.html"];

2)AES暗号化ラッパーを提供する別のオープンソースプロジェクトがあります。アプリをリリースする前に、非実稼働コードを記述して、HTMLコンテンツをバンドルリソースとなる暗号化されたデータファイルに暗号化します。アプリが実行されると、ファイルが開かれ、を介してNSString提供できるオブジェクトに復号化されます。UIWebViewloadHTMLString: baseURL:

3)最後に、基盤となるCommonCryptoAPIを使用してバンドルリソースを保護する別の例を示します。この例では、カスタムビルドステップを使用して、特定のフォルダー内のリソースを自動的に暗号化します。これにより、保護されたHTMLコンテンツがかなり頻繁に変更される場合に時間を節約できます。

于 2012-06-15T02:40:15.517 に答える
1

ファイルを暗号化して実行時に復号化するか、バンドルに含めることはできず、それらを読み取ってアプリ内のエンコードされたデータに変換するコンパイル時スクリプトを用意し、UIWebView にロードするだけで済みます。

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
于 2012-06-14T22:02:26.320 に答える
-4

UIWebViewコード内でもすべてのHTML などを作成してから、

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

すべての HTML 文字列をプレーン テキストとして手動でロードします。ただし、そうしないことをお勧めします。コンパイルされたソース コードからすべての文字列を本当に分離したい人がいる場合、それは可能です (本当に要求の厳しいことをしない限り)。

ほとんどのユーザーは、ipa ファイルの内容を気にしません。検査する人が 1% 未満で済む場合は、このトピックについてあまり心配する必要はありません。

別の側面も可能です (これは素晴らしいアイデアではありませんが): UIWebView を、あなたとアプリだけが知っている秘密の Web サイトに向けることができます。これは絶対にお勧めできません

于 2012-06-14T21:58:47.760 に答える