Dengan menggunakan tutorial ini, Kita akan membahas konsep "Contoh AngularJS untuk Sanitasi HTML di dalam Form Input Field Menggunakan Perpustakaan angular-sanitize di Browser". Mari kita mulai diskusi untuk melakukan tugas di bawah ini
Angular Quick Guide - $sanitize</h2> <p ng-bind="msg"></p> <p ng-bind-html-unsafe="msg"></p> <p ng-bind-html="msg"></p> <p ng-bind-html-unsafe="safeMsg"></p> <div style="margin-top: 20px;">Sponsored by <a title="window.open('//www.solargalore.com.au')">Solar Galore</a></div></div> </div> </body> </html> <script> angular.module('expressionsEscaping', ['ngSanitize']) .controller('ExpressionsEscapingCtrl', function ($scope, $sanitize) { $scope.msg = 'Hello, <b>World</b>!'; $scope.safeMsg = $sanitize($scope.msg); }); </script>Pikiran Akhir
Saya harap artikel ini membantu Anda mempelajari "Sanitasi HTML di dalam Bidang Input Formulir Menggunakan Perpustakaan angular-sanitize di Browser dalam Contoh AngularJS". Jika Anda menghadapi masalah apa pun, beri tahu saya melalui bagian komentar. Bagikan artikel ini dengan pengembang Angular lainnya melalui jejaring sosial. Terima kasih
Saat Anda membiarkan AngularJS menulis HTML di aplikasi Anda, Anda harus memeriksa HTML untuk kode berbahaya. Dengan memasukkan "sudut-santize. js" di aplikasi Anda, Anda dapat melakukannya dengan menjalankan kode HTML melalui fungsi ngSanitize
Mengapa beberapa gaya Anda tidak berfungsi lagi saat menggunakan [innerHtml] untuk menampilkan beberapa konten HTML? . Ini adalah fitur yang hebat - tetapi memiliki bug/fitur yang cukup mengganggu karena jika Anda memiliki elemen dengan gaya sebaris, gaya tersebut akan dihapus dari halaman Anda. Dilihat dari banyaknya pertanyaan tentang cara mematikannya, jelas ada kekurangannya. Yang mengatakan, saya sangat menghargai Angular devs membangun ini untuk melindungi sebagian besar dari kita dari melakukan sesuatu yang konyol di webapp mereka
Pendekatan termudah adalah menonaktifkan DOMSanitizer dan pendekatan yang disarankan pada Stack Overflow adalah membuat pipa safeHtml sehingga Anda dapat menulis
Ini beberapa baris kode jika Anda hanya ingin memasukkannya - lihat jawabannya di sini
Namun sebelum terjun langsung ke solusi yang menonaktifkan fitur keamanan yang diaktifkan secara default, mari pikirkan sejenak tentang apa yang sedang kita lakukan.
Mengapa menonaktifkannya sama sekali?
Kasus penggunaan yang saya (dan tampaknya banyak lainnya) miliki adalah saya ingin menampilkan konten HTML yang dibuat pengguna - mulai dari cuplikan kecil hingga seluruh halaman HTML. Masalahnya adalah DomSanitizer terlalu banyak menghapus HTML saya, dan tidak ada cara untuk mengonfigurasi aturannya. Dalam kasus saya, saya memiliki bentang dengan atribut gaya sebaris serta
Ingin merender beberapa data yang disediakan pengguna ke halaman, tetapi karena alasan apa pun, Anda tidak dapat menggunakan {{ curly brace syntax }} Angular?
Mungkin pikiran pertama Anda adalah menyatukannya dengan seutas tali, seperti ini
var content = "<span>" + userContent + "</span>"; element.text(content);_Tetapi berhati-hatilah. Hal semacam ini dapat membuka Anda terhadap serangan XSS dan hal-hal buruk lainnya
Anda harus keluar atau membersihkan data itu sebelum menempatkannya di halaman
Membersihkan
Angular secara otomatis membersihkan data jika Anda menggunakan direktif ng-bind-html. Ini berarti menghapus HTML seluruhnya
Serangkaian Hello <em>World!</em> menjadi Hello World
Sanitasi Secara Manual
Jika Anda ingin membersihkan data tanpa menggunakan ng-bind-html, Anda dapat menggunakan layanan $sanitize. Instal dan minta modul sebagai ketergantungan
bower install angular-sanitize
function yourThing($sanitize) { return { function getContent(str) { return "<span>" + $sanitize(str) + "</span>"; } }; }0
Kemudian cukup suntikkan di tempat yang dibutuhkan, dan gunakan
function yourThing($sanitize) { return { function getContent(str) { return "<span>" + $sanitize(str) + "</span>"; } }; }Melarikan diri
Angular secara otomatis mengeluarkan data jika Anda menggunakan function yourThing($sanitize) { return { function getContent(str) { return "<span>" + $sanitize(str) + "</span>"; } }; }1 atau {{ curly brace syntax }}. Ini berarti menampilkan karakter literal alih-alih menafsirkannya sebagai HTML
Data yang terlihat seperti Hello <em>World!</em> akan dirender sebagai Hello <em>World!</em> (bukan Hello World)
Melarikan diri secara manual
Angular tampaknya tidak mengekspos layanan bawaan untuk keluar. Namun Lodash (v3) memiliki fungsi function yourThing($sanitize) { return { function getContent(str) { return "<span>" + $sanitize(str) + "</span>"; } }; }5 yang melakukan persis seperti ini
Instal Lodash jika Anda belum menggunakannya. function yourThing($sanitize) { return { function getContent(str) { return "<span>" + $sanitize(str) + "</span>"; } }; }6
Kemudian lepaskan string Anda sesuai kebutuhan
function yourThing() { return { function getContent(str) { return "<span>" + _.escape(str) + "</span>"; } }; }Dan dengan itu, Anda dan pengguna Anda aman untuk hari lain
Jika Anda ingin posting saya yang dijadwalkan secara rutin tentang praktik terbaik Angular, serta dunia baru Angular 2, daftar ke buletin saya di bawah ini
Terima kasih sudah membaca
Kesuksesan. Sekarang periksa email Anda
Pelajari dasar-dasar React dalam 5 hari
Akhirnya mengerti bagaimana React bekerja. Kamu akan
🎉 Dapatkan sesuatu di layar
💄 Tulis komponen dinamis
🏃 Jadikan interaktif
😎 Ambil data nyata
🛳 Taruh online
5 hari, 5 email. Pergi dengan dasar-dasar dan rencana
Dapatkan Pelajaran 1 sekarang juga 👇
Terjadi kesalahan saat mengirimkan langganan Anda. Silakan coba lagi
Alamat email
Kirimi Saya Pelajaran 1saya menghargai privasi surat elektronik Anda. Berhenti berlangganan kapan saja
Sebelum kita melanjutkan, saya harus bertanya
izin
Terjadi kesalahan saat mengirimkan langganan Anda. Silakan coba lagi
MenyelesaikanMempelajari React bisa menjadi perjuangan — begitu banyak pustaka dan alat
Saranku? . )
Untuk pendekatan langkah demi langkah, lihat lokakarya Pure React saya
Belajar berpikir dalam Bereaksi
- 90+ pelajaran siaran layar
- Transkrip lengkap dan teks tertutup
- Semua kode dari pelajaran
- Wawancara pengembang
Pure React karya Dave Ceddia adalah karya yang sangat jelas dan mendalam. Hormat. Saya seorang pelatih React di London dan akan sangat merekomendasikan ini kepada semua pengembang front-end yang ingin meningkatkan atau mengkonsolidasikan