2012-02-07 41 views
8

Tôi muốn bán ứng dụng iPhone, sẽ hiển thị một lượt xem web duy nhất cho trang web, nói http://www.myapp.com/webview/ Tôi muốn ứng dụng lưu trữ hiệu quả các thông tin cần thiết để xác thực tại trang web (tức là chỉ người nào đó đã mua ứng dụng mới có thể xem trang này)Mã hóa https bảo mật cho ứng dụng iPhone vào trang web

Làm cách nào khác để có một webview an toàn, đơn giản trên iPhone mà không yêu cầu người dùng đăng nhập (về cơ bản họ mua ứng dụng sẽ tạo thành xác thực của họ cho trang)

Có ai có thể trợ giúp việc này không?

+0

Bạn thực sự nên chấp nhận câu trả lời bên dưới. Nó là rất tốt. –

Trả lời

18

Không có cách nào tuyệt đối để đạt được mục tiêu này. Nếu bạn có một dịch vụ web sử dụng thông tin xác thực được chia sẻ (một gói được đính kèm trong ứng dụng), thì có thể đảo ngược thiết kế thông tin xác thực đó. Cuối cùng, không thể đảm bảo rằng một khách hàng đang chạy trên một máy khác là "khách hàng của bạn".

Đã có nhiều cuộc thảo luận về điều này. Nó không phải là vô vọng, chỉ không thể giải quyết 100% (hoặc thậm chí 90%). Một bí mật được chia sẻ đơn giản qua SSL sẽ ngăn chặn phần lớn những kẻ tấn công của bạn mà không làm hại người dùng của bạn hoặc tốn nhiều chi phí để phát triển. Đó là obfuscation, không an ninh, nhưng giá rẻ và "chủ yếu là hiệu quả" là tốt hơn nhiều so với đắt tiền và "chủ yếu là hiệu quả."

Nếu bạn có một sản phẩm có giá trị rất cao, thì nó có thể đảm bảo các giải pháp tích cực hơn (đắt đỏ). Tất cả các giải pháp này bao gồm một trong hai điều:

  • xác thực người sử dụng chứ không phải là chương trình, hoặc
  • cảnh giác liên tục, xem cho các cuộc tấn công mới và đáp ứng với bản sửa lỗi vá họ.

Loại sau rất tốn kém và không bao giờ kết thúc. Hãy chắc chắn rằng nó có giá trị nó.

Một số cuộc thảo luận hữu ích khác:


EDIT Tôi muốn chỉ ra một điều về việc tôi đề cập đến "bí mật chia sẻ qua SSL". Hãy nhớ rằng nếu bạn không xác minh chứng chỉ, bạn phải chịu các cuộc tấn công trung gian rất dễ dàng. Các proxy sẵn có như Charles có thể thực hiện việc này. Cách tiếp cận tốt nhất là đảm bảo rằng chứng chỉ SSL được trả về được ký bởi chứng chỉ gốc của bạn, không chỉ là "bất kỳ chứng chỉ đáng tin cậy nào". Bạn có thể cấu hình lại chứng chỉ nào được ứng dụng của bạn tin cậy với SecTrustSetAnchorCertificates(). iOS5:PTL bao gồm kỹ thuật này trong Chương 11 (trang 221). Tôi cũng đã đưa nó vào một thư viện có tên là RNPinnedCertValidator.

Một lớp tốt khác là triển khai hệ thống phản hồi thách thức trong đó máy chủ xác thực rằng khách hàng có bí mật được chia sẻ mà không bao giờ đặt nó trên dây. Bài viết trên Wikipedia về Challenge-resonse authentication bao gồm một giải thích tốt về thuật toán.

+0

Phản hồi tuyệt vời, cảm ơn bạn. –

+0

Đã chỉnh sửa để bao gồm cách giảm thiểu vấn đề phát hiện SSL. –

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