2017-03-17 58 views
6

我們有一個爲客戶提供多種白標籤解決方案的應用程序 - 這意味着它們託管在他們自己的域中。如何動態更改科爾多瓦白名單?

我們有一個科爾多瓦應用程序,我們希望用戶可以使用此應用程序訪問所有這些網站,但是我不想每次我們簽署新客戶時都要重新部署。

  • 有沒有辦法通過url或其他方式加載白名單?這意味着我們可以通過我們的數據庫即時添加域名。
  • 當您將所有網址列入白名單時,是否存在巨大的安全風險?

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

爲了澄清,我很想有像一個網址,它加載每次啓動時的白名單設置,您可以指向。

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/" /> 

...這個文件將在啓動時自動加載。

創建JS基於插件

如果不是當前的解決方案,是可以通過創建一個(基於JavaScript)科爾多瓦插件來做到這一點安全?與我們嘗試加載的網址在白名單外部時手動重定向一樣?

這意味着我們將科爾多瓦列入白名單並使用我們自己的插件來阻止我們自己的白名單外的所有內容。

(我知道,當我們的數據庫被攻破,這不是安全的,但在這種情況下,我們一般的更大的問題。我們的應用程序是爲了好玩,並且不依賴於關鍵功能)

+0

我不認爲有一個簡單的方法。我能想到的一種方法是將允許導航設置爲*通配符,並將所有請求路由到服務器端,以處理過濾器中的請求過濾並重定向到相應的URL – Gandhi

+0

Dirk,您的目標平臺是什麼? ?如果包含iOS,恐怕沒有什麼可以輕鬆做到的。這是因爲根據文檔白名單似乎使用[NSAppTransportSecurity](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33),其中轉到編譯的應用程序(包)的屬性文件。並且該配置由iOS/Apple的網絡框架本身處理,因此您無法「實時」更改它。所以你的自定義插件可能是唯一的方法。 – SergGr

回答

1

有沒有機制可以動態更新一次構建的應用的白名單。這首先會在很大程度上破壞提供白名單的安全性。

將所有內容白名單的安全風險非常高,尤其是當您加載不屬於您的網站時。將這些網站加載到應用程序的主框架中,可以訪問應用程序可以訪問的同一個科爾多瓦橋 - 這意味着這些網頁可以使用安裝在應用程序中的相同插件。 (注意:在應用程序瀏覽器或外部打開這些鏈接並不會共享相同的風險,因爲它不提供對科爾多瓦橋的訪問。)

注意:即使使用網站,風險也很高您擁有:應成功執行MITM攻擊,或者您的後端黑客入侵惡意內容可能會提供給最終用戶。

不知道更多關於您的服務如何工作,很難提供更多的幫助,但我會建議爲每個客戶端建立一個單獨的應用程序。您可以創建腳本來自動執行(幾乎)所有操作,以便將更新發布到客戶端並不麻煩。

+0

Hi @Kerri Shotts,謝謝你的回答。爲什麼數據庫支持白名單會破壞安全性?這是不是意味着我們的數據庫已經被破壞 - 而且我們有更大的問題?我們的應用程序並非真正的關鍵應用程序 - 它是預測遊戲的平臺(用於娛樂)。 我們是一個*真的*小團隊,所以爲每個用戶發佈一個應用程序不是我們的選擇。我想知道我們是否可以自己寫一個插件,或者爲此編寫一個插件。 –

1

下面是我在這裏的經歷一對夫婦更多的選擇:

  1. 打開與InAppBrowser插件和「_SYSTEM」目標URL。這應該在本地瀏覽器中打開URL,並在全視圖中顯示該URL。這似乎允許沒有白名單調整。

    window.open(url, '_system', 'location=yes,enableViewportScale=yes'); 
    
  2. 如果你需要留在你的應用程序(而不是打開原生瀏覽器),你可以做一個哈克變通,你加載您控制和信任的網頁,並把它傳遞一個動態的URL 。在該頁面上,您可以獲得一個iframe,其來源根據傳入的參數進行動態更改。該應用程序可以通過查詢字符串傳遞所需的URL,然後從那裏更改iframe。
    很明顯,將您允許的URL限制在您控制的列表中會很好。