Langsung ke konten utama

WhiteList (Daftar Putih)



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

Postingan populer dari blog ini

Panduan Keamanan

Panduan Keamanan Panduan berikut mencakup beberapa praktik terbaik keamanan yang harus Anda pertimbangkan ketika mengembangkan aplikasi Cordova.   Perlu diketahui bahwa keamanan adalah topik yang sangat rumit dan oleh karena itu panduan ini tidak lengkap.   Jika Anda yakin dapat berkontribusi pada panduan ini, silakan mengajukan masalah dalam pelacak bug Cordova di bawah   "Dokumentasi"   .   Panduan ini dirancang untuk dapat diterapkan pada pengembangan Cordova umum (semua platform) tetapi pertimbangan khusus platform khusus akan dicatat. Panduan ini membahas topik-topik berikut: Daftar putih Iframe dan Mekanisme Callback Id Penyertaan Sertifikat Sertifikat yang ditandatangani sendiri Penyimpanan terenkripsi Tips Umum Artikel yang Direkomendasikan dan Sumber Daya Lain Daftar putih Baca dan pahami   Panduan Daftar Putih Daftar putih domain tidak berfungsi di Android API 10 dan di bawah, dan WP8 untuk iframe dan XMLHttpRequest. ...

iOS WebViews

iOS WebViews Panduan ini menunjukkan cara menanamkan komponen WebView yang diaktifkan dengan Cordova di dalam aplikasi iOS yang lebih besar.   Untuk detail tentang bagaimana komponen-komponen ini dapat saling berkomunikasi, lihat Plugin Aplikasi. Dukungan untuk WebViews untuk iOS dimulai dengan Cordova versi 1.4, menggunakan Cleaver komponen yang template Xcode berfungsi sebagai implementasi referensi.   Cordova 2.0 dan versi yang lebih baru hanya mendukung implementasi Cleaver berbasis sub-proyek. Instruksi ini memerlukan setidaknya Cordova 4.x dan Xcode 8.0, bersama dengan   config.xml file dari proyek iOS yang baru dibuat.   Anda dapat menggunakan prosedur di   Command-Line Interface   untuk membuat proyek baru, lalu mendapatkan   config.xml file dari dalam subdirektori aplikasi yang disebutkan di dalamnya   platforms/ios . Untuk mengikuti instruksi ini, pastikan Anda memiliki distribusi Cordova terbaru.   Unduh dari cordova...

Langkah Berikutnya

Langkah selanjutnya Untuk pengembang yang memiliki pemahaman tentang cara menggunakan Cordova CLI dan memanfaatkan plugins, ada beberapa hal yang mungkin ingin Anda pertimbangkan untuk meneliti selanjutnya untuk membangun aplikasi Cordova yang lebih baik dan lebih berkinerja.   Dokumen berikut menawarkan saran tentang berbagai topik yang berkaitan dengan praktik terbaik, pengujian, peningkatan, dan topik lainnya, tetapi tidak dimaksudkan untuk bersifat preskriptif.   Pertimbangkan ini titik peluncuran Anda untuk pertumbuhan Anda sebagai pengembang Cordova.   Juga, jika Anda melihat sesuatu yang dapat ditingkatkan, silakan   berkontribusi   ! Praktik Terbaik untuk Aplikasi Cordova 1) SPA Adalah Teman Anda Pertama dan terutama - aplikasi Cordova Anda harus mengadopsi desain SPA (Aplikasi Halaman Tunggal).   Didefinisikan secara longgar, SPA adalah aplikasi sisi klien yang dijalankan dari satu permintaan halaman web.   Pengguna memuat seran...