2011-12-08 25 views
8

Chúng tôi muốn sử dụng một dịch vụ web trong ứng dụng của chúng tôi mà rõ ràng đòi hỏi phải gọi một URL. Nó không phải HTTPS, chỉ là HTTP cũ, sử dụng NSURLConnection.Làm cách nào để gọi URL "bí mật" trong ứng dụng iOS?

Vấn đề là: Dịch vụ web này rất tốn kém và mỗi nghìn cuộc gọi đều tốn tiền thật của chúng tôi. Nỗi sợ hãi là ai đó có thể tìm ra URL nào chúng tôi gọi và sau đó sử dụng sai mục đích đó, để cho chi phí phát nổ. Không có cách nào để chúng tôi theo dõi nếu một cuộc gọi đến dịch vụ web đó là hợp pháp.

Chúng tôi đang tính toán dựa trên số lượng ứng dụng mà chúng tôi bán, nhân với giả định tần suất sử dụng ứng dụng trung bình cho mỗi người dùng. Chúng tôi có một số thống kê tốt mà chúng tôi dựa trên các giả định của mình.

Có cách nào để biết URL nào ứng dụng đang gọi trên Internet để truy xuất thông tin không?

+0

Những gì bạn đang làm về cơ bản là không an toàn. Bạn sẽ không thể ẩn thông tin này thành một kẻ tấn công. Đây chỉ là "(trong) an ninh thông qua tối tăm". – rook

Trả lời

2

Có, có rất nhiều cách để thực hiện việc này. Ví dụ, kết nối iPhone với mạng wifi, trong đó router có proxy trong suốt. Kiểm tra nhật ký của proxy. Bạn sẽ thấy tất cả các URL. Phụ thuộc vào cách xác định người dùng của bạn, nhưng điều này khá dễ dàng.

4

Nếu dịch vụ Web không được mã hóa, sẽ là tầm thường khi sử dụng proxy để chặn các yêu cầu web do điện thoại thực hiện. Nếu dịch vụ Web đắt tiền không cung cấp ít nhất một số hình thức xác thực cơ bản, tôi sẽ xem xét nghiêm túc bao gồm cả URL của nó trong một ứng dụng công cộng.

+0

Bạn có thể giải thích ý bạn là "tầm thường" và "proxy" không? Đó có phải là một bộ định tuyến Wi-Fi đưa ra một giao thức về những gì sẽ xảy ra không? Dịch vụ web được "bảo vệ" bởi một id người dùng trong yêu cầu URL. Bằng cách đó họ xác định "khách hàng" của họ. Tất nhiên, bất cứ ai cũng có thể sao chép url đó và chỉ gọi nó chính xác như vậy thay mặt chúng tôi. – dontWatchMyProfile

+0

Chắc chắn. Không cần phải đi xung quanh với một bộ định tuyến nào cả. Bất cứ khi nào tôi gỡ lỗi một ứng dụng mạng mà tôi đang thực hiện, tôi sẽ kích hoạt proxy phần mềm Charles [http://charlesproxy.com] đáng tin cậy của mình và đặt cài đặt WiFi của iPhone để sử dụng địa chỉ máy tính để bàn của tôi làm proxy. Với điều này, tôi có thể theo dõi tất cả các yêu cầu http được gửi và nhận bởi điện thoại của tôi. Tôi rất muốn đề xuất sử dụng phần mềm như vậy để tự kiểm tra nó - bạn sẽ có thể xem những gì người khác cũng có thể thu thập từ các yêu cầu mạng của bạn. –

12

Bạn có thể dễ dàng sử dụng trình thám thính mạng trong khi điện thoại đang ở trên WiFi để tìm ra thông tin này. Có vẻ như điều thực sự quan trọng là bạn sử dụng SSL với một số loại mã thông báo an toàn trong URL.

Nếu đây không phải là tùy chọn, có lẽ bạn có thể cung cấp dịch vụ proxy của riêng bạn sẽ sử dụng mã thông báo bảo mật và SSL? Proxy cũng cấp khả năng điều tiết các yêu cầu và chặn người dùng được biết là độc hại. Throttling đặt một ràng buộc trên chi phí mỗi người dùng có thể phải chịu trong một khoảng thời gian nhất định. Một lợi ích khác của proxy là nó cho phép người dùng thu thập số liệu thống kê và đo lường chi phí phát sinh bởi những người dùng khác nhau tạo thuận lợi cho phát hiện người dùng độc hại và lập kế hoạch kinh doanh. Proxy cũng có thể giúp bạn tiết kiệm một số tiền nếu dịch vụ đằng sau nó là không trạng thái bằng cách thêm bộ nhớ cache có thể xóa nhiều cuộc gọi tốn kém.

+0

+1 Lưu ý rằng SSL vẫn có thể bị ngửi bằng một proxy như Charles nếu chương trình của bạn tin tưởng một cách mù quáng chứng chỉ. Nó cần phải kiểm tra xem chứng chỉ được ký bởi * bạn *, không chỉ là "một số người ký đáng tin cậy." Ngoài ra, vẫn có thể đảo ngược chương trình của bạn để xác định tải trọng, nhưng proxy SSL đã được xác minh sẽ tăng đáng kể thanh trên iOS, để lại những kẻ tấn công có động lực cao hơn là kẻ tấn công bình thường. –

+1

Bạn nói đúng về những điểm này. Một cách để tăng cường bảo mật của hệ thống là sử dụng cả SSL và mã thông báo bảo mật và tạo mã thông báo bắt nguồn từ một yếu tố bên ngoài ứng dụng, như mật khẩu chỉ được người dùng được ủy quyền biết (cân nhắc an toàn cho cân bằng khả năng sử dụng) . Lưu ý rằng chức năng được sử dụng để lấy mã thông báo phải là một chiều. Proxy cấp thêm bảo mật bằng cách cho phép bạn điều tiết hoặc chặn các yêu cầu, do đó đặt giới hạn trên vào chi phí mà người dùng độc hại có thể phát sinh trên chủ sở hữu hệ thống trong một khoảng thời gian nhất định. –

+1

Hãy cho tôi một chút thời gian để có được quan điểm của bạn ở đây, nhưng đã đồng ý. Nếu bạn có thể gắn mã thông báo "hãy để tôi nói chuyện với bạn" cho một thông tin cụ thể của người dùng (như tài khoản), thì bạn có thể giới hạn mạnh mẽ việc lạm dụng. Nếu bạn không thể, sau đó bạn có thể giới hạn yếu ớt lạm dụng bằng cách điều chỉnh dựa trên IP. –

1

Bỏ qua thực tế rằng những người đã bẻ khóa thiết bị của họ có thể xem ứng dụng của bạn, tôi tin rằng có thể kiểm tra lưu lượng truy cập giống như bất kỳ thiết bị nào khác (máy tính xách tay, máy tính bảng, v.v.) các ứng dụng như WireShark. Tuy nhiên, tôi nghi ngờ sẽ có nhiều rủi ro về điều này qua mạng 3G di động.

1

Câu hỏi hay.

Như nhiều người đã nói, có, thật dễ dàng để tìm ra các url yêu cầu ứng dụng của bạn.

Lưu ý về HTTPS: Nhưng kể từ khi bạn đang sử dụng HTTPS bạn là chấp nhận vì qua HTTPS tên miền sẽ bị che khuất đến địa chỉ IP, và người không thể nhìn thấy các thông số chuỗi truy vấn URL. Ví dụ: nếu URL của bạn là https://somewebsite.com?uid=mylogin&pass=mypass, chúng chắc chắn sẽ không thể nhìn thấy "uid = mylogin & pass = mypass" và chúng có thể chỉ nhìn thấy địa chỉ IP chứ không chỉ tên miền.(Xem https://serverfault.com/questions/186445/can-an-attacker-sniff-data-in-a-url-over-https)

Sidenote: Có thể là an toàn để giả định rằng Apple thực hiện một số loại chẩn đoán yêu cầu HTTP khi họ đánh giá ứng dụng của bạn - đó sẽ có ý nghĩa vì nó là lợi ích tốt nhất của họ để thử và tìm ra những gì ứng dụng của bạn hoạt động ở nhiều góc độ.

3

Sử dụng URL đơn giản là cách chắc chắn để cho phép các kịch bản lệnh chạy bạn không hoạt động. Nếu không có cách nào để bạn theo dõi xem cuộc gọi đến dịch vụ web đắt tiền có hợp pháp hay không, hãy thiết lập dịch vụ web của riêng bạn trước dịch vụ web thực để đảm bảo rằng dịch vụ web của riêng bạn có thể xác minh tính hợp pháp của cuộc gọi trước khi chuyển tiếp yêu cầu dịch vụ web thực.

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