2013-02-06 22 views
8

Tôi đang tìm cách mã hóa dữ liệu người dùng trong một ứng dụng và cơ chế NSFileProtection trông hoàn hảo cho việc này.Bảo vệ dữ liệu/NSFileProtectionComplete - được hỗ trợ thành công thông qua entitlements.plist?

Điều này SO Question/Answer thread chỉ cho tôi tại WWDC 2011 Video Securing iOS Apps cho mẹo 'quá tốt để trở thành sự thật' trong việc thiết lập Bảo vệ dữ liệu trên ứng dụng thông qua các quyền (xem trong 33 phút).

Vì vậy, tôi đã thử ứng dụng này cho ứng dụng iOS 5.x + của mình và gặp phải sự cố khi nó phàn nàn về Invalid Entitlements.

Tôi đã định cấu hình Bảo vệ dữ liệu cho ứng dụng cụ thể qua Cổng cấp phép iOS và cập nhật Cấp phép ứng dụng của tôi, vì vậy về lý thuyết, tất cả nên được đặt nhưng tôi vẫn gặp lỗi.

Nếu tôi xóa cài đặt FileProtectionComplete cụ thể khỏi Quyền, ứng dụng sẽ chạy mà không có lỗi Lỗi không hợp lệ.

Khi điều tra điều này, tôi cũng thấy một số dân gian đang nhận được ứng dụng của họ rejected (tại thời điểm họ tải lên tệp nhị phân) vì điều này không được hỗ trợ (hoặc không được chấp nhận?). Xin lưu ý rằng tôi đặc biệt hỏi về Bảo vệ dữ liệu chứ không phải là Passbook.

Ở giai đoạn này, tôi nghĩ, có thể thực sự là, 'quá tốt là đúng'. Vì vậy, tôi sắp từ bỏ lá cờ phép thuật này, và thay vào đó sử dụng phương pháp lập trình, thêm NSFileProtectionComplete làm tùy chọn ghi.

Tuy nhiên, trước khi tôi làm điều đó, bất kỳ ai cũng có thể xác nhận rằng họ có thể thêm thành công tính năng Bảo vệ dữ liệu chỉ bằng cách sử dụng cờ Thuộc tính không? Cảm ơn.

Trả lời

0

Tôi đã thử bảo vệ dữ liệu bằng quyền lợi và hoạt động tốt. Bí quyết là giữ cho mục nhập tệp quyền lợi của bạn trong dự án xcode giống như của provisioning profile.

Cụ thể, 2 cài đặt sau trong hồ sơ quyền và hồ sơ cấp phép phải giống nhau: - "com.apple.developer.default-data-protection" - Tôi đã thiết lập điều này là NSFileProtectionComplete. "ứng dụng nhận dạng" - Tôi không sử dụng ký tự đại diện trong số nhận dạng mặc dù tôi nghĩ rằng nó cũng hoạt động.

+0

Bạn có thể giải thích ý bạn bằng cách này không? Tôi thiết lập một tệp quyền lợi, đảm bảo rằng AppID của tôi đã được định cấu hình để bảo vệ dữ liệu và đã cung cấp hồ sơ cấp phép nhưng không có bất kỳ thành công nào. Tôi tìm thấy bài đăng này tại [Diễn đàn Apple Dev xác nhận điều này không hoạt động] (https://devforums.apple.com/message/636524#636524) (kể từ ngày 21 tháng 3 năm 2012) – edelaney05

+0

edelaney05- Tôi đã cập nhật câu trả lời của mình . Công việc này là dành cho bạn ? –

0

Nó sẽ không hoạt động đối với tôi bằng cách sử dụng ký tự đại diện cho id tiểu sử (ví dụ: my.company.app. *) Do đó phải tạo một thẻ đủ điều kiện mới. Nó làm việc cho tôi với Entitlements.plist tôi nhìn như thế này:

<?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> 

và với phần tôi profile cho nó trông như thế này: ....

<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 không được hỗ trợ thông qua các quyền lợi nữa. Thay vào đó, nó được xác định trong hồ sơ cung cấp.

Tôi gặp vấn đề tương tự như bạn đã làm.Khi tôi cố gắng xây dựng và chạy trên một thiết bị, tôi đã cảnh báo sau đây:

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).

Trong giao diện điều khiển, nó thể hiện bản thân như lỗi này:

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

Cuối cùng, tôi thấy các thiết lập thích hợp. Bạn phải đăng nhập vào cổng thông tin dành cho nhà phát triển và bật bảo vệ dữ liệu trên id ứng dụng được liên kết với hồ sơ cấp phép bạn đang sử dụng. Xem hình dưới đây:

enter image description here

Các vấn đề liên quan