ng-bind-html-unsafe
dihapus di Angular 1.2
Saya mencoba menerapkan sesuatu yang perlu saya gunakan ng-bind-html-unsafe
. Dalam dokumen dan pada komitmen github mereka mengatakan:
ng-bind-html menyediakan perilaku seperti ng-html-bind-tidak aman (innerHTML hasilnya tanpa sanitasi) ketika terikat dengan hasil $ sce.trustAsHtml (string).
Bagaimana kamu melakukan ini?
Jawaban:
Itu harus:
plus di controller Anda:
alih-alih sintaks lama, tempat Anda dapat mereferensikan
$scope.html
variabel secara langsung:Seperti yang ditunjukkan beberapa komentator,
$sce
harus disuntikkan ke controller, jika tidak Anda akan mendapatkan$sce undefined
kesalahan.sumber
<p ng-bind-html="trustedHtml"></p>
dan$scope.trustedHtml = $sce.trustAsHtml(description(category.id));
<p ng-bind-html="description(category.id)"></p>
maka baris terakhir dari fungsi:return $sce.trustAsHtml(value);
Saring
Pemakaian
sumber
ngSanitize
sini?ngSanitize
, jadi tidak perlu untukngSanitize
Secara pribadi saya membersihkan semua data saya dengan beberapa perpustakaan PHP sebelum masuk ke database sehingga tidak perlu filter XSS lain untuk saya.
Dari AngularJS 1.0.8
Menggunakan:
Untuk menonaktifkan
$sce
:sumber
<script>System.out.printIn("Hello World!");</script>
, belum mencoba ini secara pribadi karena PHP saya menghapus semua JS dari input pengguna. Saya menghapus contoh kedua saya karena yang asli Angular lebih unggul dalam segala hal, gunakan saja yang itu.var line = "<label onclick="alert(1)">aaa</label>";
1. gunakan filter
menggunakan (html):
2. gunakan ngSanitize: lebih aman
termasuk
angular-sanitize.js
tambahkan
ngSanitize
di aplikasi root angularmenggunakan (html):
sumber
Cukup membuat filter akan melakukan triknya. (Dijawab untuk Sudut 1.6)
Dan gunakan ini sebagai ikuti di html.
sumber
Jika Anda ingin arahan lama kembali, Anda dapat menambahkan ini ke aplikasi Anda:
Pengarahan:
Pemakaian
Sumber - https://github.com/angular-ui/bootstrap/issues/813
sumber
JavaScript
HTML
sumber
Untuk Rails (setidaknya dalam kasus saya) jika Anda menggunakan permata angularjs-rails , harap diingat untuk menambahkan modul sanitasi
Dan kemudian memuatnya di aplikasi Anda ...
Maka Anda dapat melakukan hal berikut:
Pada templat:
Dan akhirnya:
sumber
sumber
sumber