Dokumentasi ini menjelaskan plugin ini di versi master. Versi lain ada di GitHub.
cordova-plugin-whitelist
Plugin ini menerapkan kebijakan daftar putih untuk menavigasi tampilan web aplikasi di Cordova 4.0
Instalasi
Anda dapat menginstal plugin daftar putih dengan Cordova CLI, mulai dari npm:
$ cordova plugin add cordova-plugin-whitelist
$ cordova prepare
Platform Cordova yang Didukung
- Android 4.0.0 atau lebih tinggi
Daftar Putih Navigasi
Mengontrol ke URL mana WebView itu sendiri dapat dinavigasi. Berlaku hanya untuk navigasi tingkat atas.
Secara default, navigasi hanya diperbolehkan ke
file://URL. Untuk mengizinkan URL orang lain, Anda harus menambahkan <allow-navigation>tag ke config.xml:<!-- Allow links to example.com -->
<allow-navigation href="http://example.com/*" />
<!-- Wildcards are allowed for the protocol, as a prefix
to the host, or as a suffix to the path -->
<allow-navigation href="*://*.example.com/*" />
<!-- A wildcard can be used to whitelist the entire network,
over HTTP and HTTPS.
*NOT RECOMMENDED* -->
<allow-navigation href="*" />
<!-- The above is equivalent to these three declarations -->
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />
Quirks: di Android ini juga berlaku untuk iframe untuk skema non-http.
Daftar Putih Intent
Mengontrol URL mana yang diizinkan aplikasi untuk meminta sistem dibuka.
Di
config.xml, tambahkan <allow-intent>tag, seperti ini:<!-- Allow links to web pages to open in a browser -->
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<!-- Allow links to example.com to open in a browser -->
<allow-intent href="http://example.com/*" />
<!-- Wildcards are allowed for the protocol, as a prefix
to the host, or as a suffix to the path -->
<allow-intent href="*://*.example.com/*" />
<!-- Allow SMS links to open messaging app -->
<allow-intent href="sms:*" />
<!-- Allow tel: links to open the dialer -->
<allow-intent href="tel:*" />
<!-- Allow geo: links to open maps -->
<allow-intent href="geo:*" />
<!-- Allow all unrecognized URLs to open installed apps
*NOT RECOMMENDED* -->
<allow-intent href="*" />
Tanpa
<allow-intent>tag, tidak ada permintaan ke URL eksternal diizinkan. Namun, aplikasi Cordova default mencakup serangkaian allow-intententri yang cukup liberal secara default. Disarankan untuk mempersempit ini berdasarkan kebutuhan masing-masing aplikasi.
Di Android, ini sama dengan mengirim maksud bertipe BROWSEABLE.
Daftar putih ini tidak berlaku untuk plugin, hanya hyperlink dan panggilan
window.open().Daftar Putih Permintaan Jaringan
Kontrol yang diminta jaringan (gambar, XHRs, dll) diizinkan untuk dibuat (melalui kait asli cordova).
Catatan: Kami menyarankan Anda menggunakan Kebijakan Keamanan Konten (lihat di bawah), yang lebih aman. Daftar putih ini sebagian besar historis untuk tampilan web yang tidak mendukung CSP.
Di
config.xml, tambahkan <access>tag, seperti ini:<!-- Allow images, xhrs, etc. to google.com -->
<access origin="http://google.com" />
<access origin="https://google.com" />
<!-- Access to the subdomain maps.google.com -->
<access origin="http://maps.google.com" />
<!-- Access to all the subdomains on google.com -->
<access origin="http://*.google.com" />
<!-- Enable requests to content: URLs -->
<access origin="content:///*" />
<!-- Don't block any requests -->
<access origin="*" />
Tanpa
<access>tag, hanya permintaan ke file://URL yang diizinkan. Namun, aplikasi Cordova default termasuk <access origin="*">secara default.
Catatan: Daftar putih tidak dapat memblokir pengalihan jaringan dari situs web jauh yang masuk daftar putih (yaitu http atau https) ke situs web yang tidak masuk daftar putih. Gunakan aturan CSP untuk mengurangi pengalihan ke situs web yang tidak masuk daftar putih untuk tampilan web yang mendukung CSP.
Kelebihan: Android juga memungkinkan permintaan untuk https://ssl.gstatic.com/accessibility/javascript/android/ secara default, karena ini diperlukan agar TalkBack berfungsi dengan baik.
Kebijakan Keamanan Konten
Kontrol yang diminta jaringan (gambar, XHRs, dll) diizinkan untuk dibuat (melalui webview secara langsung).
Pada Android dan iOS, daftar putih permintaan jaringan (lihat di atas) tidak dapat memfilter semua jenis permintaan (mis.
<video>& WebSockets tidak diblokir). Jadi, selain daftar putih, Anda harus menggunakan tag Kebijakan Keamanan Konten <meta> di semua halaman Anda.
Di Android, dukungan untuk CSP dalam sistem tampilan web dimulai dengan KitKat (tetapi tersedia di semua versi menggunakan Crosswalk WebView).
Berikut adalah beberapa contoh deklarasi CSP untuk
.htmlhalaman Anda :<!-- Good default declaration:
* gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
* Enable eval(): add 'unsafe-eval' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">
<!-- Allow everything but only from the same origin and foo.com -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">
<!-- This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that
* CSS only from the same origin and inline styles,
* scripts only from the same origin and inline styles, and eval()
-->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<!-- Allows XHRs only over HTTPS on the same domain. -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">
<!-- Allow iframe to https://cordova.apache.org/ -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">
Komentar
Posting Komentar