Giao tiếp giữa trình duyệt và ứng dụng gốc một cách an toàn


12

Tôi đang làm việc trên ứng dụng web cần dữ liệu mà nó chỉ có thể nhận được từ trình duyệt ứng dụng gốc được cài đặt cục bộ.

Làm thế nào bạn có thể đi xung quanh hộp cát trình duyệt để bạn có thể giao tiếp (một cách an toàn, vì dữ liệu có khả năng nhạy cảm), với một ứng dụng gốc.

Trong ví dụ duy nhất mà tôi tìm thấy, người dùng tự di chuyển một số mã thông báo và tệp giữa hai thứ, đây là một trải nghiệm người dùng khủng khiếp mà tôi muốn tránh.


1
Bạn có thể có được một số loại giải pháp hoạt động trong đó ứng dụng gốc chứa một máy chủ web nhỏ chạy trên localhost.
amon

Tôi cũng nghĩ vậy ... Tôi có những mối quan tâm không được củng cố mơ hồ rằng điều đó sẽ không được "quan tâm". Có bất kỳ ví dụ về các ứng dụng làm điều này ngày hôm nay? (viết điều này lên trong một câu trả lời và có thể bạn sẽ nhận được điểm)
Zak Kus

Một trình duyệt nhúng sẽ là tốt nhất. Nhúng trình duyệt vào ứng dụng và lập trình các tương tác của bạn khi cần.
GregJava

Câu trả lời:


7

Bạn có thể nhúng máy chủ web vào ứng dụng gốc, sau đó khách hàng của bạn có thể thực hiện cuộc gọi đến nó thông qua các liên kết được mã hóa cứng tới http: // localhost / xyz (bạn có thể phải lo lắng về các cảnh báo kịch bản chéo trang web ở đây và / hoặc chạy máy chủ trên một cổng không http). Nếu bạn sử dụng websockets, ứng dụng gốc của bạn thậm chí có thể đẩy dữ liệu lên trình duyệt web sau khi trình duyệt đã bắt đầu liên lạc.

Tôi tự làm điều đó một cách cục bộ, một trình điều khiển webbrowser nhúng yêu cầu dữ liệu trực quan hóa từ một máy chủ web tùy chỉnh và khi phát triển tôi chạy cả hai trên cùng một PC.

Có rất nhiều máy chủ web nhúng nhỏ và hiệu quả cho C / C ++ (Mongoose, NxWeb, civetweb, v.v.), C # có xu hướng sử dụng máy chủ WCF đầy đủ, python đi kèm với một máy chủ web nhỏ trong IIRC.


Tôi đang làm việc với một giải pháp như thế này, nhưng có một số vấn đề khi trình duyệt cố gắng kết nối qua websocket từ một trang web từ một tên miền Internet (www.mydomain.com) với máy chủ websocket localhost, đặc biệt nếu trang web được phục vụ với HTTPS yêu cầu máy chủ websocket được cấu hình để sử dụng wss (WebSocket với SSL). Nếu bạn sử dụng chứng chỉ tự ký để "bảo mật" máy chủ websocket thì trình duyệt sẽ không thích kết nối websocket của bạn. Firefox sẽ cho phép nó một khi bạn chấp nhận chứng chỉ cục bộ không an toàn, nhưng các trình duyệt khác sẽ không cho phép bạn kết nối dễ dàng như vậy.
David

1
Đối với c # những ngày này, máy chủ web nhúng tốt nhất có thể là tự lưu trữ.
Esben Skov Pedersen

8

Có một số cách bạn có thể trộn lẫn một ứng dụng gốc và ứng dụng trình duyệt.

Bạn có thể nhúng trình duyệt bên trong ứng dụng gốc, giống như các ứng dụng PhoneGap làm trên thiết bị di động. Điều đó sẽ cho phép bạn mở rộng công cụ javascript của trình duyệt và cho phép bạn thực hiện cuộc gọi giữa hai người.

Ngoài ra, hãy suy nghĩ lại kiến ​​trúc của bạn. Có cả ứng dụng gốc và ứng dụng dựa trên trình duyệt sử dụng máy chủ làm trung gian. Vì vậy, cả trình duyệt và ứng dụng gốc chỉ nói chuyện với máy chủ web, trong đó chuyển tiếp thông tin giữa hai khi cần thiết.

Hoặc nếu bạn cần chức năng riêng ... chỉ cần tạo một ứng dụng gốc duy nhất.

Tôi không khuyến nghị phương pháp 'máy chủ web cục bộ' cho bất kỳ thứ gì ngoài các ứng dụng chạy trong môi trường được kiểm soát. Nếu phần mềm của bạn có ý định cài đặt và chạy trên các máy người dùng cuối với các yêu cầu hỗ trợ tối thiểu, bạn sẽ thấy mình phải đối phó với toàn bộ các vấn đề liên quan đến tường lửa và phần mềm chống vi-rút.


Dữ liệu tôi cần từ ứng dụng gốc là về việc máy đó (chứ không phải người dùng) có được chấp nhận hay không. Nếu bạn sử dụng một máy chủ web bình thường như một trung gian, bạn có thể chắc chắn rằng trình duyệt đang bật giống với ứng dụng gốc được đánh giá. Ngoài ra, hoàn toàn đồng ý, không có hai người vì lý do chính đáng, nhưng chúng tôi có lý do của chúng tôi ^ _ ^
Zak Kus

Ngoài ra, tôi cũng không rõ việc nhúng trình duyệt vào ứng dụng gốc thực sự sẽ cho phép giao tiếp giữa trình duyệt và ứng dụng gốc như thế nào
Zak Kus

@Zak như tôi đã nói, bạn có thể mở rộng công cụ javascript để cho phép họ nói chuyện với nhau theo cách PhoneGap làm trên các ứng dụng di động. Bạn sẽ xác định các phương thức có thể được gọi bởi javascript trên trang được thực thi bởi ứng dụng gốc hoặc gọi các chức năng javascript từ ứng dụng gốc.
GrandmasterB

Sử dụng một trình duyệt nhúng như vậy, tôi nghĩ, là cách tốt nhất để đảm bảo trình duyệt đang chạy trên máy mà nó cần để chạy.
GrandmasterB

Về mặt kỹ thuật tôi sẽ đồng ý rằng một ứng dụng gốc có chế độ xem web là cách dễ nhất. Tuy nhiên, theo bài viết tiếng Đức này từ heise trực tuyến , trình xem web android cho Android 4.3 trở xuống có các vấn đề bảo mật nghiêm trọng không thể khắc phục.
k3b
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.