2011-01-25 2 views
2

Я работаю над корпоративным приложением, где клиент должен удаленно удалять все данные, хранящиеся в приложении, с устройства. То есть в случае, когда пользователь сообщает о потерянном устройстве.Удаленная очистка данных приложения в iOS

Если мы забудем о его реализации на стороне службы, возможно ли выполнить удаленное удаление данных, хранящихся в изолированной программной среде приложения. Как насчет удаления файлов, присутствующих в ресурсах приложений, таких как sqllite-файлы и сертификаты?

Я просматривал сеть для этого и пришел по адресу this site, который утверждает, что делает это в своем продукте.

Если это можно сделать, как мы должны подойти к этой проблеме?

Удаленная функция стирания была добавлена ​​Apple в iOS 4.2 с использованием мобильного устройства. Я не думаю, что они делают это через удаленные уведомления. В этом случае не было бы гарантии уверенного выстрела, что данные будут удалены с устройства.

ответ

4

Лучшим способом было бы зашифровать данные на диске iPhones и только расшифровать его в памяти (так как в iOS 4 встроен аналогичный механизм). Прежде чем позволить пользователю использовать данные, вы спрашиваете сервер, если iPhone разрешен для шифрования данных (даже лучший подход заключается в том, что сервер дает iPhone ключ для дешифрования данных, поэтому злоумышленник не найдет это в коде). Если сервер отклоняет запрос, приложение вытирает все сохраненные данные, и все готово.

Это, конечно, работает только тогда, когда ваше приложение имеет право требовать подключения к Интернету (или по крайней мере подключения к локальной интрасети, где он может взаимодействовать с сервером)

+0

Ваше решение кажется наиболее логичным. Однако ссылка, которую я поделил в своем вопросе (о пользе для корпоративного приложения), говорит, что «Удалите приложение Good и зашифрованные данные, если телефон потерян или украден, или вытрите все устройство в ситуациях, требующих этого». Мне интересно, что если они могут удалить все приложение, должен быть способ сделать это. – Vin

+0

@Vin: Я не уверен, как они это сделали, я предполагаю, что они используют какой-то джейлбрейк. Хотя можно удалять исполняемый двоичный файл на OS X (и, я думаю, также на iOS), сам двоичный файл находится в защищенной папке, и песочница остановит вас. Удаленное убийство приложения, пока оно не запускается, было бы возможно через работающего демона, я думаю, что лучшим вариантом будет мобильный субстрат (Jailbreak). Но, конечно, Jailbreak может не быть решением, которое вы хотите, но как его «просто» корпоративное приложение было бы возможно. – JustSid

+0

Я не думаю, что они используют Jailbreak. Приложение доступно в AppStore. Поиск Хорошо для предприятия. – Vin

0

Я думаю, вы должны strore всех данных, которые вы хотите, чтобы стереть в папке Documents, а затем протрите его, если необходимо

0

Мы можем удалить элементы, хранящиеся в SQLite или документы папки на получение какого-то уведомления. Но это возможно только при открытии приложения и получении уведомления. Я могу привести один пример: Когда приложение откроется, пользователь получит сообщение с вашего локального сервера (может быть при входе в систему или при загрузке первого экрана). , когда вы получите это сообщение, удалите данные из каталога sqlite или документов, которые вы использовали.

Однако в вышеуказанном случае требуется, чтобы приложение было открыто. Если вам нужны данные для удаления, даже если приложение не запущено, возможно, вам нужно использовать push-уведомление

+1

В случае, если устройство было украдено, есть вероятность, что новый пользователь не запустит приложение при получении уведомлений. – Vin

+0

да это правильный. Но удаление может произойти только при запуске или как приложение узнает, что устройство украдено, и данные должны быть удалены. Вы можете ввести экран входа для своего приложения. В этом случае ваше приложение будет защищено. – Snehal

0

На веб-странице, о которой вы упоминаете, говорится об очистке почтовых и календарных данных.

Служба MobileMe позволяет полностью стереть телефон, предполагая, что нажатие включено (details).

Затем, если кто-то «находит» телефон и достаточно умен, чтобы отключить push и Find My iPhone в настройках перед выдачей команды удаленной очистки, они могут уйти с вашими данными. Достаточно отпугнуть мелкого телефонного вора, но не того, кто после ваших данных.

Приложение может удалить свои данные. Но он может делать это только при активном (переднем плане или фоновом). Опять же, это становится проблемой времени, когда вы говорите приложению, чтобы удалить то, что нужно удалить, прежде чем кто-либо не разрешит его удалить.

-1

хранить все в папке Documents.затем использовать код на этой теме, чтобы удалить все

NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease]; 
NSError *error = nil; 
NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDir error:&error]; 
if (error == nil) { 
    for (NSString *path in directoryContents) { 

     if([path isEqualToString:@"cache.db"]) { 
      //dont delete db 

     } 
     else { 
      NSString *myFilePath = [documentsDir stringByAppendingPathComponent:path]; 

      //NSLog(myFilePath); 

      BOOL removeSuccess = [fileMgr removeItemAtPath:myFilePath error:&error]; 
      if (!removeSuccess) { 
       //handle errors? 
       NSLog(@"Not deleted: %@ %@", path, [error userInfo]); 

      } 

     } 


    } 

} else { 
    // Error handling 
    //... 
} 

Deleting all the files in the iPhone sandbox (documents folder)?

+0

Я видел ваш вопрос. Проблема в том, что некоторые файлы, такие как sqlite db, также присутствуют в папке ресурсов приложения (до того, как они скопированы в папку документов). Как насчет этих файлов? – Vin

+0

У меня была такая же проблема. отредактировал мой ответ –

2

Единственный способ, которым я могу думать, чтобы удовлетворить это требование, чтобы настроить удаленные уведомления, и иметь обработчик уведомлений в приложении дерна Чувствительный данные при запуске. Это не самый лучший подход (мне нравятся некоторые другие предложения в этом потоке), но в явном виде этого требования удаленные уведомления Apple кажутся единственным способом.

+0

Спасибо за ваш ответ Dan. Но, как я уже упомянул в ответе JustSid, как работает стороннее приложение, доступное в магазине приложений, это и многое другое? – Vin

+1

Не может быть. Буквально, то, что вам нужно, чтобы быть в состоянии добраться, недоступны вам на не-джейлбрейк-устройстве. Я не могу понять, что они на самом деле означают, что они, похоже, требуют, не требуя от пользователя джейлбрейка. Удаление данных - это одно. Удаление всего приложения из приложения? Не может быть сделано. –

Смежные вопросы