修改科爾多瓦白名單
其中一個安全補丁涉及創建非http/s
協議新的白名單。如果您的應用程序使用除http://
和https://
之外的其他協議,例如sms:
,mailto:
,geo:
,tel:
等,則您需要進行一些配置更改以將這些協議添加到白名單。
這是很容易做到:
- 開拓科爾多瓦config.xml文件,位於:yourProject - >應用程序 - > yourProject - > Android的 - >本地 - >水庫 - - > xml - > config.xml。注意:如果您的文件位於您的項目 - >應用程序 - > yourProject - > android - > nativeResources - > res - > xml,您將必須對此文件進行更改(在nativeResources文件夾下),因爲如果這個文件存在,當應用程序重建時,它將覆蓋/ native /文件夾中的config.xml。
滾動到您的白名單條目。你應該看到這樣的上市項目:
<access origin="https://my.company.com/resources" />
<access origin="http://*.othersupplier.com" />
對於所使用的每一個非HTTP/HTTPS協議,則必須添加白名單條目是這樣的:
<access origin="sms://*" launch-external="true" />
<access origin="mailto://*" launch-external="true" />
推出-external屬性將告訴Cordova允許此URL由Android系統中的其他應用程序處理 - 而不是由當前運行的Cordova/Worklight應用程序處理。
這意味着當用戶點擊<a href="sms:555...">
鏈接時,Android會讓任何註冊到sms:
的應用程序處理請求。
如果是在白名單中的唯一入口是這樣的:
<access origin="*" />
那麼你的應用程序將允許任何互聯網資源,這可能會打開你的應用程序對某些類型的攻擊資源請求。
您應該列出您希望能夠訪問的標籤中的特定域。
如果你的白名單看起來是這樣的:
<access origin="https://www.ibm.com" />
<access origin="https://my-worklight-server.company.com" />
和你的應用程序中,你利用mailto:
協議打開用戶的電子郵件客戶端,並且geo:
協議來顯示地圖,那麼你應該修改白名單看起來像:
<access origin="https://www.ibm.com" />
<access origin="https://my-worklight-server.company.com" />
<access origin="mailto://*" launch-external="true" />
<access origin="geo://*" launch-external="true" />
HTML:
<a href="tel:+212x-xx-xx-xx-xx">Call</a>
加入檔案「config。XML」:
<access origin="tel:*" launch-external="yes"/>
來源:
https://www.ibm.com/developerworks/community/blogs/worklight/entry/action_required_cordova_android_security_update?lang=en`
我會試試看AAhad。非常感謝你。只有一個問題:它會打開InAppBrowser然後重定向,還是直接進入電話或電子郵件應用程序?因爲屏幕上的中間階段(通過InAppBrowser)並不是一個好的體驗。再次感謝。 – abelabbesnabi 2014-10-09 15:49:54