2017-12-11 6 views
1

SwiftやObj-Cを使って、私はアプリを作ったので、機密データをアプリの特定のフォルダに保存します。今、私は、ユーザーがそのフォルダを見ることができず、自分のコンピュータにコピーすることができないようにしたい、あるいは最高のものを、例えばiMazingのようなソフトウェアで隠すことができるようにしたい。iOS:iMazingから自分のアプリを開くときに、特定のフォルダのMacでコピーを隠したり保護したりする方法を教えてください。

私が追加しようとした、これは全く解決策ではありません「を。」:それはiMazingでアクセス可能であるようHow to hide folder in NSDocumentsDirectory and disallow backup via iTunes & iCloud

私はライブラリフォルダに保管しようとした、これは、あまりにも解決策ではありません。 How to hide folders created in Document Directory in ios?

enter image description here

私は、アプリケーションを使用したくない私はiMazingとアプリからドキュメントフォルダにアクセスする必要があるため、iTunesのファイル共有をサポートしています。

iMazingでアクセスできないiPadの一部のファイルを保存することができ、「すべてか何か」のアプリケーションがiTunesファイル共有オプションをサポートしているため極限まで持ち運ぶことはできません。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *libraryDirectory = [paths objectAtIndex:0]; 
BOOL isDir = NO; 
NSError *error; 
if (! [[NSFileManager defaultManager] fileExistsAtPath:libraryDirectory isDirectory:&isDir] && isDir == NO) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:libraryDirectory withIntermediateDirectories:NO attributes:nil error:&error]; 
} 

NSString *pathLibToCreate = [libraryDirectory stringByAppendingPathComponent:@"testDoc"]; 
NSString *pathDocToCreate = [[self documentsDirectory] stringByAppendingPathComponent:@"testDoc"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:pathLibToCreate]) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:pathLibToCreate withIntermediateDirectories:NO attributes:nil error:&error]; 
} 

if ([[NSFileManager defaultManager] fileExistsAtPath:pathDocToCreate]) { 
    [[NSFileManager defaultManager] removeItemAtPath:pathDocToCreate error:nil]; 
} 
NSError *copyError = nil; 
if (![[NSFileManager defaultManager] copyItemAtPath:pathLibToCreate toPath:pathDocToCreate error:&copyError]) { 
    NSLog(@"Error copying files: %@", [copyError localizedDescription]); 
} 

ありがとうございます。

+0

データを暗号化することがあります。その後、あなたはそれを解読する必要がありますが、誰もあなたのデータを読むことはできません。 – Obenland

答えて

1

「ファイル共有」権限をNOに使用し、配布プロファイルを使用している場合、あなたはAmazingでファイルを表示することはできません。 あなたのアプリのデベロッパープロファイルを使用して、これらのファイルを表示できるからです。

+0

しかし、フォルダを表示するソリューションはありますか? – Claudio

+0

リリースアプリケーションで[ファイル共有]を[はい]にすると、ドキュメントディレクトリは表示できますが、アプリディレクトリは表示されません。 たとえば、NSApplicationSupportDirectoryにファイルを作成すると、そのファイルはアクセスされません。 –

+0

ああ!私はリリースモードで試していなかったので、その点を理解できませんでした。どうもありがとう、あなたは天才です(DávidPásztorのような、あなたを助けるためではなく、警官を演じる人たちとは対照的に)。 – Claudio

1

少なくとも、ユーザーがシステム上のすべてのファイルにアクセスできるjailbrokenデバイスを持っている場合、これは可能ではないと思います。

ユーザーがファイルの内容にアクセスできないようにするには、ファイルの内容を暗号化する方法があります。 CommonCryptorフレームワークを使用するのは簡単な作業です。

暗号化されたデータベースの場合は、SQLCipherを使用できます。

+0

あなたはjailbrokenなしのiPadのための解決策があると思いますか? – Claudio

+0

iMazingが使用しているインターフェイスがわかりません。私は彼らがバックアップファイルからファイルを抽出すると思います。データの機密性に応じて、誰もファイルを取得せず、代わりに暗号化を使用するということには関係ありません。 – liefersfl

1

私はiMazingの開発者の1人です。確かに、受け入れられた答えは正しい:iMazingと他の同様のツールは、開発中にアプリケーションのサンドボックスにアクセスできるようにする。 、すべてのファイルを表示/書き込みアクセスを読み込みます

ジェイルブレイクデバイス

iMazing:しかし、注意すべき3以上の場合があります。前のiOS 8.3へのiOSのバージョンを実行して

デバイス

ここに同じ - のiOS 8.3の前に、我々はあまりにも書き込み/、アプリのサンドボックスへのアクセス権を持って読むことができました。

アクセスiTunesのバックアップを経て

iMazingと同様のツールは、ユーザーがアプリのサンドボックスを参照してくださいできるようになるのバックアップブラウザを持っています。 LibraryやDocumentsフォルダで、キャッシュやtmpでは使用できません。本当に安全にしたい場合は、明示的にexclude files from the backupが必要です。もちろん、これには大きな欠点があります...

+0

@ Gregzo、iMazingとうまくいって、私たちは毎日それを使います:D – Claudio

関連する問題