Удаленная очистка данных приложения в iOS - PullRequest
2 голосов
/ 25 января 2011

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

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

Я просматривал его в сети и обнаружил этот сайт , который утверждает, что сделал это в своем продукте.

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

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

Ответы [ 6 ]

4 голосов
/ 25 января 2011

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

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

2 голосов
/ 25 января 2011

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

0 голосов
/ 25 января 2011

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

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
    //...
}

Удаление всех файлов в песочнице iPhone (папка документов)?

0 голосов
/ 25 января 2011

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

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

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

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

0 голосов
/ 25 января 2011

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

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

0 голосов
/ 25 января 2011

Я думаю, вы должны скопировать все данные, которые вы хотите стереть, в папку «Документы», а затем стереть их, если необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...