Perbarui v8
Jawaban di bawah ini berfungsi tetapi mengekspos aplikasi Anda terhadap risiko keamanan XSS! . Alih-alih menggunakan this.sanitizer.bypassSecurityTrustResourceUrl(url)
, disarankan untuk digunakanthis.sanitizer.sanitize(SecurityContext.URL, url)
Memperbarui
Untuk versi RC.6 ^ gunakan DomSanitizer
Plunker
Dan pilihan yang baik adalah menggunakan pipa murni untuk itu:
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer} from '@angular/platform-browser';
@Pipe({ name: 'safe' })
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
transform(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
ingatlah untuk menambahkan yang baru SafePipe
ke declarations
larik AppModule. ( seperti yang terlihat pada dokumentasi )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Jika Anda menggunakan embed
tag, ini mungkin menarik untuk Anda:
Versi lama RC.5
Anda dapat memanfaatkan DomSanitizationService
seperti ini:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
Dan kemudian ikat ke url
dalam templat Anda:
<iframe width="100%" height="300" [src]="url"></iframe>
Jangan lupa untuk menambahkan impor berikut:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Sampel plunker
Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(url): any { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } }
dan dalam template saya panggil<iframe width="100%" height="315" src="{{url}} | safe" frameborder="0" allowfullscreen></iframe>
. Tapi itu tidak berfungsi dengan kesalahan 'nilai tidak aman'. Tolong bantu[src]="url | safe"
hanya menghapus tanda kurungthis.sanitizer.sanitize(SecurityContext.URL, url)
saya mendapatkan kesalahan "Kesalahan ERROR: nilai tidak aman digunakan dalam konteks URL sumber daya" II mengubahnya untukthis.sanitizer.bypassSecurityTrustResourceUrl(url)
berfungsi dengan baik. Adakah yang tahu apa yang salah?this.sanitizer.sanitize(SecurityContext.URL, url)
tidak berfungsi danthis.sanitizer.bypassSecurityTrustResourceUrl(url)
berfungsi tetapi menimbulkan masalah kerentanan keamanan yang tinggi dalam analisis kode statis, yang mencegah saya memindahkan ini ke produksi. Perlu cara untuk memperbaikinyaYang ini bekerja untuk saya.
sumber
Ini bekerja untuk Angular 5.2.0
sarasa.Component.ts
sarasa.Component.html
itu semuanya !!!
sumber
Saya telah berjuang selama 4 jam. masalahnya ada di tag img. Saat Anda menggunakan braket persegi untuk 'src' ex: [src]. Anda tidak dapat menggunakan ungkapan sudut ini {{}}. Anda tinggal memberi langsung dari contoh objek di bawah ini. jika Anda memberikan ekspresi sudut {{}}. Anda akan mendapatkan kesalahan interpolasi.
pertama saya menggunakan ngFor untuk mengulangi negara
kedua Anda meletakkan ini di tag img. ini dia.
sumber
Saya mengalami masalah ini juga, tetapi untuk menggunakan pipa aman di modul sudut saya, saya menginstal paket npm pipa aman, yang dapat Anda temukan di sini . FYI, ini bekerja di Angular 9.1.3, saya belum mencoba ini di versi Angular lainnya. Inilah cara Anda menambahkannya langkah demi langkah:
Instal paket melalui npm install safe-pipe atau yarn add safe-pipe. Ini akan menyimpan referensi untuk itu dalam dependensi Anda di file package.json, yang seharusnya sudah Anda miliki dari memulai proyek Angular baru.
Tambahkan modul SafePipeModule ke NgModule.import di file modul Angular Anda seperti:
Tambahkan pipa aman ke elemen dalam template untuk komponen Angular yang Anda impor ke NgModule Anda dengan cara ini:
sumber
sumber
Selamat! ¨ ^^ Saya punya solusi yang mudah & efisien untuk Anda, ya!
Bagus ;)
sumber
unsafe value used in a resource URL context
<video> <source [src]=video.url type="video/mp4" /> Browser not supported </video>
sebenarnya, Anda dapat menggunakannya untuk menghapus dokumen juga .. jika Anda memiliki masalah saat menggunakan tag video, saya di sini;)