2017-03-17 15 views
6

Chúng tôi có một ứng dụng có nhiều giải pháp danh sách trắng cho khách hàng - nghĩa là chúng được lưu trữ trong miền của riêng họ.Làm thế nào để tự động thay đổi danh sách trắng Cordova?

Chúng tôi có một ứng dụng Cordova và chúng tôi muốn người dùng có thể truy cập tất cả các trang web này bằng ứng dụng này, nhưng Tôi không muốn triển khai lại mỗi khi chúng tôi ký một ứng dụng khách mới.

  • có cách nào để tải danh sách trắng thông qua url hay gì đó không? Điều này có nghĩa là chúng tôi có thể thêm các tên miền khi di chuyển qua cơ sở dữ liệu của chúng tôi.
  • có rủi ro bảo mật lớn khi bạn liệt kê tất cả các url không?

https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/

Ví dụ

Để làm rõ, tôi rất thích có một cái gì đó giống như một URL mà bạn có thể trỏ đến nơi nó tải mọi khi khởi động các thiết lập danh sách trắng.

http://myexampledomain.com/whitelist.config

<allow-navigation href="*.myexampledomain.com/*" /> 
    <allow-navigation href="*.subdomain.someclientdomain.com/*" /> 
    <allow-navigation href="*.subdomain.someclientdomainb.com/" /> 
    <allow-navigation href="*.subdomain.someclientdomainc.com/" /> 

... tập tin này sẽ được tự động tải khi khởi động.

Tạo một JS dựa Plugin

Nếu không có giải pháp hiện tại, là nó có thể làm điều này an toàn bằng cách tạo ra một (dựa JavaScript) Cordova plugin? Giống như chuyển hướng thủ công khi URL chúng tôi cố gắng tải nằm ngoài danh sách cho phép?

Điều này có nghĩa là chúng tôi sẽ Cordova-whitelist tất cả mọi thứ và sử dụng plugin của riêng chúng tôi để chặn tất cả mọi thứ bên ngoài danh sách trắng của riêng chúng tôi.

(Tôi biết đây không phải là an toàn khi cơ sở dữ liệu của chúng tôi bị tổn thương, nhưng trong trường hợp đó chúng ta có vấn đề lớn hơn nói chung. Ứng dụng của chúng tôi là để cho vui và không dựa vào chức năng quan trọng)

+0

tôi không nghĩ rằng có một cách thẳng về phía trước. Một cách tiếp cận mà tôi có thể nghĩ là cho phép chuyển hướng thành * ký tự đại diện và định tuyến tất cả các yêu cầu đến phía máy chủ xử lý việc lọc yêu cầu trong bộ lọc và chuyển hướng đến các URL tương ứng – Gandhi

+0

Dirk, (các) nền tảng mục tiêu của bạn là gì ? Nếu iOS được bao gồm thì tôi e rằng không có gì bạn có thể dễ dàng làm. Điều này là do theo danh sách trắng tài liệu dường như sử dụng [NSAppTransportSecurity] (https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33) bên trong sẽ chuyển đến tệp thuộc tính của ứng dụng đã biên dịch (gói). Và cấu hình đó được xử lý bởi khung công tác Mạng của iOS/Apple để bạn không thể thay đổi cấu hình "khi đang di chuyển". Vì vậy, plugin tùy chỉnh của bạn có lẽ là cách duy nhất. – SergGr

Trả lời

1

Có không có cơ chế cập nhật động danh sách trắng của ứng dụng khi được tạo. Điều này phần lớn sẽ đánh bại an ninh của việc cung cấp một danh sách trắng ở nơi đầu tiên.

Rủi ro bảo mật cho danh sách trắng tất cả mọi thứ là rất cao, đặc biệt nếu bạn đang tải các trang web bạn không sở hữu. Việc tải các trang web đó vào khung chính của ứng dụng sẽ cấp cho họ quyền truy cập vào cùng một cây cầu Cordova mà ứng dụng của bạn có quyền truy cập - điều đó có nghĩa là các trang đó có thể sử dụng cùng một plugin được cài đặt trong ứng dụng của bạn. (Lưu ý: Mở các liên kết đó trong Trình duyệt trong ứng dụng hoặc bên ngoài không chia sẻ các rủi ro tương tự, vì điều đó không cung cấp quyền truy cập vào cây cầu Cordova.)

Lưu ý: rủi ro cũng cao ngay cả khi bạn sử dụng các trang web bạn sở hữu: một cuộc tấn công MITM sẽ được thực thi thành công HOẶC nội dung độc hại tấn công phụ trợ của bạn có thể được phân phát cho người dùng cuối.

Nếu không biết thêm về cách dịch vụ của bạn hoạt động, thật khó để hỗ trợ nhiều hơn, nhưng tôi khuyên bạn nên tạo ứng dụng riêng cho từng khách hàng. Bạn có thể tạo các kịch bản tự động hóa (gần như) mọi thứ để phát hành bản cập nhật cho khách hàng của bạn không phải là công việc nặng nhọc.

+0

Xin chào @Kerri Shotts, cảm ơn câu trả lời của bạn. Tại sao một db trắng danh sách trắng đánh bại an ninh? Điều này có nghĩa là cơ sở dữ liệu của chúng tôi đã bị xâm phạm - và chúng tôi có vấn đề lớn hơn? Ứng dụng của chúng tôi không thực sự là một ứng dụng quan trọng - đó là một nền tảng cho các trò chơi dự đoán (cho vui). Chúng tôi là một nhóm nhỏ * thực sự *, vì vậy việc phát hành ứng dụng cho mọi người dùng không phải là một lựa chọn cho chúng tôi. Tôi tự hỏi liệu chúng ta có thể viết một plugin cho chính chúng ta hay cái gì đó cho việc này hay không. –

1

Dưới đây là một tùy chọn vài chi tiết từ kinh nghiệm của tôi ở đây:

  1. Mở URL với các plugin InAppBrowser và mục tiêu '_system'. Điều này sẽ mở URL trong trình duyệt gốc, với URL ở chế độ xem đầy đủ. Điều này dường như được cho phép mà không có điều chỉnh danh sách trắng.

    window.open(url, '_system', 'location=yes,enableViewportScale=yes'); 
    
  2. Nếu bạn cần phải ở trong ứng dụng của bạn (và không phải mở trình duyệt bản địa), bạn có thể làm một công việc xung quanh hacky nơi bạn tải một trang mà bạn kiểm soát và sự tin tưởng, và vượt qua nó một URL động . Trên trang đó, bạn có thể có một số iframe có nguồn được thay đổi động dựa trên các tham số được truyền vào. Ứng dụng có thể chuyển vào URL mong muốn thông qua chuỗi truy vấn, sau đó chỉ cần thay đổi iframe từ đó.
    Rõ ràng sẽ tốt hơn nếu giới hạn các URL mà bạn cho phép ở đó vào danh sách bạn kiểm soát.

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