2013-02-06 7 views
8

Szukam szyfrowania danych użytkownika w aplikacji, a mechanizm NSFileProtection wygląda idealnie do tego.Ochrona danych/NSFileProtectionComplete - z powodzeniem obsługiwana przez uslugi rightslements.plist?

Ten SO Question/Answer thread wskazał mi na WWDC 2011 wideo Securing iOS Apps która wydała takie „zbyt piękne, aby mogło być prawdziwe” wierzchołek ustawienie ochrony danych w całej aplikacji poprzez uprawnień (patrz od 33 minut w).

Próbowałem tego dla mojej aplikacji na iOS 5.x + i wpadłem na problem, w którym narzeka on na Invalid Entitlements.

Skonfigurowałem usługę Data Protection dla konkretnej aplikacji za pośrednictwem portalu iOS Provisioning Portal i zaktualizowałem obsługę aplikacji, więc teoretycznie powinienem wszystko ustawić, ale nadal otrzymuję błąd.

Po usunięciu określonego ustawienia FileProtectionComplete z uprawnienia, aplikacja działa bez błędu Nieprawidłowe uprawnienia.

Podczas sprawdzania tego, zobaczyłem także, że niektórzy ludzie otrzymują swoje aplikacje rejected (w tym momencie przesyłają plik binarny), ponieważ nie jest to obsługiwane (lub przestarzałe?). Proszę zwrócić uwagę, że konkretnie pytam o ochronę danych, a nie o rezerwację.

Na tym etapie myślę, może to naprawdę jest "zbyt piękne, aby mogło być prawdziwe". Tak więc, zamierzam zrezygnować z tej magicznej flagi uprawnień, a zamiast tego użyć metody programowej, dodania NSFileProtectionComplete jako opcji zapisu.

Jednak zanim to zrobię, czy ktoś może potwierdzić, że udało się dodać ochronę danych tylko za pomocą flagi Uprawnienia? Dzięki.

Odpowiedz

0

Próbowałem ochrony danych przy użyciu uprawnień i działa dobrze. Sztuką jest utrzymanie wpisu do pliku uprawnień w projekcie xcode tak samo jak w profilu obsługi administracyjnej.

W szczególności następujące 2 ustawienia w pliku uprawnień i profilu obsługi powinny być takie same: - "com.apple.developer.default-data-protection" - Ustawiłem to jako NSFileProtectionComplete. "Identyfikator aplikacji" - Nie używam symboli wieloznacznych w identyfikatorze, ale uważam, że powinien również działać.

+0

można opracować na co masz na myśli przez to? Ustawiłem plik uprawnień, upewniłem się, że mój identyfikator AppID został skonfigurowany do ochrony danych i wystawiłem profil informacyjny, ale nie odniosłem żadnego sukcesu. Znalazłem ten wpis na [Fora Apple Dev, które potwierdziło, że to nie działa] (https://devforums.apple.com/message/636524#636524) (stan na 21 marca 2012 r.) – edelaney05

+0

edelaney05- Zaktualizowałem moją odpowiedź . Czy to działa dla ciebie? –

0

Nie działa dla mnie, używając symbolu wieloznacznego do identyfikatora profilu (tj. My.firma.app. *), Więc musiałem utworzyć nowy w pełni kwalifikowany. To działa na mnie z moim Entitlements.plist wygląda tak:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.developer.default-data-protection</key> 
    <string>NSFileProtectionComplete</string> 
    <key>get-task-allow</key> 
    <false/> 
</dict> 
</plist> 

iz moim profilu o przekroju to wygląda tak: ....

<dict> 
    <key>application-identifier</key> 
    <string>xxx.my.company.app</string> 
    <key>com.apple.developer.default-data-protection</key> 
    <string>NSFileProtectionComplete</string> 
    <key>get-task-allow</key> 
    <false/> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>xxxxxxxx</string> 
    </array> 
</dict>    

....

10

NSFileProtectionComplete nie jest już obsługiwany przez uprawnienia. Zamiast tego jest określona w profilu udostępniania.

Miałem dokładnie ten sam problem co ty.Kiedy starałem się zbudować i uruchomić na urządzeniu, mam następujący wpis:

The executable was signed with invalid entitlements.

The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.

(0xE8008016).

W konsoli, to objawia się jako ten błąd:

May 6 16:18:13 XXXXX installd[54] : entitlement 'DataProtectionClass' has value not permitted by a provisioning profile

końcu znalazłem odpowiednie ustawienia. Musisz zalogować się do portalu dla programistów i włączyć ochronę danych w identyfikatorze aplikacji powiązanym z używanym profilem administracyjnym. Patrz zdjęcie poniżej:

enter image description here

Powiązane problemy